Сообщение Re[15]: имя переменной в компайл-тайм от 18.03.2018 14:04
Изменено 18.03.2018 14:05 Маркуша Шулин
Re[15]: имя переменной в компайл-тайм
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, ollv, Вы писали:
O>> Вообще, я тут должен кое что уточнить, в gcc есть возможность работать со строковыми литералами в компайл тайм.
R>Эта возможность есть в любом компиляторе,
это на мелкомягких не cкомпилируется. msvc13 на 15 вроде тоже пробовал.
R>соответствующем требованиям стандарта языка. Вот здесь даже есть пример реализайции класса компайл-тайм строк (ищи class str_const).
я ж говорю — писал парсер регулярных выражний, на строковых литералах. Там все компайлтайм. чет типа такого :
O>> Но вот именно в преттифанкшин, эта странность, что сделать из него параметр шаблона — не выходит.
R>Это не выходит просто потому, что __PRETTY_FUNCTION__ не имеет внешнего связвания (external linkage), а вовсе не потому, что она не является компайл-тайм сущностью.
https://ideone.com/oXQVtY
ведет он себя как обычный эррей но не как строковый литерал.
В общем, давай просто разберемся, что я подразумевал под сущностью — он не может использоваться параметром шаблона. И не используем в pragma message больше ничего.
R>Здравствуйте, ollv, Вы писали:
O>> Вообще, я тут должен кое что уточнить, в gcc есть возможность работать со строковыми литералами в компайл тайм.
R>Эта возможность есть в любом компиляторе,
это на мелкомягких не cкомпилируется. msvc13 на 15 вроде тоже пробовал.
static_assert("1"[1] == '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 больше ничего.
Re[15]: имя переменной в компайл-тайм
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, ollv, Вы писали:
O>> Вообще, я тут должен кое что уточнить, в gcc есть возможность работать со строковыми литералами в компайл тайм.
R>Эта возможность есть в любом компиляторе,
это на мелкомягких не cкомпилируется. msvc13 на 15 вроде тоже пробовал.
R>соответствующем требованиям стандарта языка. Вот здесь даже есть пример реализайции класса компайл-тайм строк (ищи class str_const).
я ж говорю — писал парсер регулярных выражний, на строковых литералах. Там все компайлтайм. чет типа такого :
O>> Но вот именно в преттифанкшин, эта странность, что сделать из него параметр шаблона — не выходит.
R>Это не выходит просто потому, что __PRETTY_FUNCTION__ не имеет внешнего связвания (external linkage), а вовсе не потому, что она не является компайл-тайм сущностью.
https://ideone.com/oXQVtY
ведет он себя как обычный эррей но не как строковый литерал.
В общем, давай просто разберемся, что я подразумевал под компайл тайм сущностью — он не может использоваться параметром шаблона. И не используем в pragma message больше ничего.
R>Здравствуйте, ollv, Вы писали:
O>> Вообще, я тут должен кое что уточнить, в gcc есть возможность работать со строковыми литералами в компайл тайм.
R>Эта возможность есть в любом компиляторе,
это на мелкомягких не cкомпилируется. msvc13 на 15 вроде тоже пробовал.
static_assert("1"[1] == '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 больше ничего.