Re[15]: имя переменной в компайл-тайм
От: ollv СССР https://youtu.be/DQDoYs6wHoo
Дата: 18.03.18 14:04
Оценка:
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, ollv, Вы писали:


O>> Вообще, я тут должен кое что уточнить, в gcc есть возможность работать со строковыми литералами в компайл тайм.


R>Эта возможность есть в любом компиляторе,

это на мелкомягких не cкомпилируется. msvc13 на 15 вроде тоже пробовал.
static_assert("1"[0] == '1', "no ");


R>соответствующем требованиям стандарта языка. Вот здесь даже есть пример реализайции класса компайл-тайм строк (ищи class str_const).

я ж говорю — писал парсер регулярных выражний, на строковых литералах. Там все компайлтайм. чет типа такого :
static_assert(std::is_same<search<STR("w++"), STR("[\+]+")>::value, STR("++")>::value, "Not matched");


O>> Но вот именно в преттифанкшин, эта странность, что сделать из него параметр шаблона — не выходит.


R>Это не выходит просто потому, что __PRETTY_FUNCTION__ не имеет внешнего связвания (external linkage), а вовсе не потому, что она не является компайл-тайм сущностью.

https://ideone.com/oXQVtY
ведет он себя как обычный эррей но не как строковый литерал.
В общем, давай просто разберемся, что я подразумевал под компайл тайм сущностью — он не может использоваться параметром шаблона. И не используем в pragma message больше ничего.
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
Отредактировано 18.03.2018 14:17 Маркуша Шулин . Предыдущая версия . Еще …
Отредактировано 18.03.2018 14:05 Маркуша Шулин . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.