Andrew
аа, да, там же ещё строку передавать
Aidar
Частично применить constezpr нельзя
Andrew
только если у тебя массив строк будет
Andrew
констэкспортных
Andrew
но, подозреваю, передавать его как-то дальше всё-таки можно...
Aidar
Да ему надо вот короче
foo(N){
compile_time(N);
run_time(N);
}
Aidar
Это можно сделать только через шаблоны сейчас
Aidar
Через типы
Aidar
Напиши шаблонную строку пофасту
cyberzx 🇷🇺
Дык потому что это рантайм уже
Ага. Поэтому сейчас у меня в API используется макрос.
Все функции получения аттрибутов принимает pair<int32_t, const char*>
и есть макрос HSTR(str) make_pair(integral_value<int32_t, hash(s)>::value, s);
Пользователям API пофиг. Им и макросы вполне удобно. Но мой внутренний перфекционист негодует. Хочется красиво делать без макросов)
cyberzx 🇷🇺
Но вообще, то что во время компиляции можно хеши строк считать, это очень круто
cyberzx 🇷🇺
Хмм. А может просто сделать struct HashedString с constexpr конструктором, который бы считал хэш
Aidar
Звучит как "всеравно будет в рантайме"
Aidar
Ну передашь ты эту строку кудато
cyberzx 🇷🇺
Да, ты прав.
cyberzx 🇷🇺
проблема в том, что не будет гарантии, что в constexpr конструкторе хэш посчитается в compile-time
cyberzx 🇷🇺
потому что параметр конструктора не constant-value
Aidar
На уровне стандарта проблема решается двумя путями:
1) разрешить литеральные типы в шаблонных параметрах
2) сделать constexpr параметры
cyberzx 🇷🇺
Надо прополсал накатать
Aidar
Aidar
Нет*
Aidar
Ну ладно скостылили теперь храним хэш просто всегда ок
Aidar
Всеравно большой камень в огород языка
Aidar
Стоп мы же можем сейчас кажись превращать констекспр поды в типы по методу Антона Полухина?
Aidar
Если да то мы можем "передавать" поды в качестве шаблонных параметров распаковывая и запаковывая их автоматически
Constantine
А строку вроде нельзя сделать шаблонным параметром
Aidar
const char* можно
Aidar
Выше пруфы
Constantine
Без макросов?
Aidar
Constantine
А можешь data[0]?
Aidar
В рантайме да
Constantine
В компильтайме
Aidar
А ты можешь?
Constantine
Нет, поэтому тебя спрашиваю)
Aidar
Давай сначала ты потом я
Aidar
Потом можем вместе если хочешь
Constantine
Просто строки в шаблонный вариадик вроде только макросами
Constantine
Побуквенно
Aidar
Да тут несуть
Constantine
Хотя констэкспр строковые классы, кажется, можно
Aidar
Задача не сделать статикстринг на шаблонах же
Constantine
Ну можно констэкспр строковый класс пихнуть и хеш забрать, если оригинальная задача
Aidar
Задача:
foo(str){
compile_time(str);
run-time(str);
}
Constantine
Хм...
Aidar
Это оригинальная
Constantine
Подожди я туплю, если констэкспр строки можно, почему до вариадика допихать нельзя
Aidar
Хз попробуй я не пробовал
Constantine
Бажка какая-то, пойду изучать мануалы во сне
Aidar
Не шарю в ваших плюсах
Aidar
Говно какое-то а не язык
Aidar
Пол шестого утра ахах что я делаю со своей жизнью
Andrew
не ты один в 5 утра страдаешь этим ))
https://godbolt.org/g/JgXP2D
Andrew
да, всё говно, кроме мочи
Andrew
вот до чего докомпилировался
https://godbolt.org/g/rVrMpV
Andrew
таки передал из рантайма constexpr объект
Andrew
а вот вернуть из рантайма в constexpr переменную, увы, хуй
https://godbolt.org/g/TyYLRU
Andrew
https://godbolt.org/g/umqDu1
Andrew
интересный всё таки кейс разобрали. Всем спасибо
Igor
Никто не баловался с нативной разработкой под Tizen случаем?
Igor
Говно какое-то а не язык
На чистом си в недописанной среде с недописанными фреймворками попробуй поработать, жизнь до этого сказкой покажется :)
Igor
Периодически идея кидает NPE/No such file/Unexpected end of file просто так. Вот захотелось ей, и кинула ;)
Aidar
Идея это та которая для джавы?
Igor
Идея это та которая для джавы?
Угу, если бы. Идея - это та, которая основана на Eclipse и служит единственным возможным окружением для разработки под Tizen
Igor
Джавовская то мне наоборот глаз радует (которая IntelliJ IDEA, конечно, Eclipse - фу-фу-фу)
Aidar
Эй на эклипс тут не гони
Igor
Aidar
Не нравится? Сделай лучше и пуллреквесть
Igor
Как минимум - нормальным intelli sense
Igor
Aidar
Это проприетарщина
Aidar
Нахер она нужна
Aidar
#holywar
Aidar
Aidar
Кодиьь*