Сообщение Re[13]: имя переменной в компайл-тайм от 18.03.2018 13:01
Изменено 18.03.2018 13:09 Маркуша Шулин
Re[13]: имя переменной в компайл-тайм
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, ollv, Вы писали:
O>> Из данного примера выходит, что размер __PRETTY_FUNCTION__ компайл тайм сущность.
R>Если пример с sizeof не достаточно убедителен, можно получить даже отдельные символы из __PRETTYY_FUNCTION__ в компайл тайм:
R>https://ideone.com/mPh41g
R>
проапдейтим.
https://ideone.com/n7BbaZ
Вообще, я тут должен кое что уточнить, в gcc есть возможность работать со строковыми литералами в компайл тайм.
что неплохо используется в MPLSTRING И вполне парсить их, я даже часть парсера регулярок реализовывал на базе этого.
Но вот именно в преттифанкшин, эта странность, что сделать из него параметр шаблона — не выходит. Хотя просто хотелось бы просто сделать из нее параметр для для прагмы мессадж ..
R>Здравствуйте, ollv, Вы писали:
O>> Из данного примера выходит, что размер __PRETTY_FUNCTION__ компайл тайм сущность.
R>Если пример с sizeof не достаточно убедителен, можно получить даже отдельные символы из __PRETTYY_FUNCTION__ в компайл тайм:
R>https://ideone.com/mPh41g
R>
R>template <typename T, size_t I>
R>constexpr char get_pretty_function_at()
R>{
R> return __PRETTY_FUNCTION__[I];
R>}
R>static_assert('i' == get_pretty_function_at<int, 42>(), "invalid symbol");
R>static_assert('e' == get_pretty_function_at<double, 55>(), "invalid symbol");
R>static_assert('b' == get_pretty_function_at<std::string, 64>(), "invalid symbol");
R>проапдейтим.
https://ideone.com/n7BbaZ
static_assert("1"[0] == '1', "It is not a compiletime array");Вообще, я тут должен кое что уточнить, в gcc есть возможность работать со строковыми литералами в компайл тайм.
что неплохо используется в MPLSTRING И вполне парсить их, я даже часть парсера регулярок реализовывал на базе этого.
Но вот именно в преттифанкшин, эта странность, что сделать из него параметр шаблона — не выходит. Хотя просто хотелось бы просто сделать из нее параметр для для прагмы мессадж ..
Re[13]: имя переменной в компайл-тайм
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, ollv, Вы писали:
O>> Из данного примера выходит, что размер __PRETTY_FUNCTION__ компайл тайм сущность.
R>Если пример с sizeof не достаточно убедителен, можно получить даже отдельные символы из __PRETTYY_FUNCTION__ в компайл тайм:
R>https://ideone.com/mPh41g
R>
проапдейтим.
https://ideone.com/n7BbaZ
Вообще, я тут должен кое что уточнить, в gcc есть возможность работать со строковыми литералами в компайл тайм.
что неплохо используется в MPLLIB И вполне парсить их,
https://github.com/sabel83/mpllibs/blob/master/libs/safe_printf/example/validate/main.cpp
я даже часть парсера регулярок реализовывал на базе этого.
Но вот именно в преттифанкшин, эта странность, что сделать из него параметр шаблона — не выходит. Хотя просто хотелось бы просто сделать из нее параметр для для прагмы мессадж ..
R>Здравствуйте, ollv, Вы писали:
O>> Из данного примера выходит, что размер __PRETTY_FUNCTION__ компайл тайм сущность.
R>Если пример с sizeof не достаточно убедителен, можно получить даже отдельные символы из __PRETTYY_FUNCTION__ в компайл тайм:
R>https://ideone.com/mPh41g
R>
R>template <typename T, size_t I>
R>constexpr char get_pretty_function_at()
R>{
R> return __PRETTY_FUNCTION__[I];
R>}
R>static_assert('i' == get_pretty_function_at<int, 42>(), "invalid symbol");
R>static_assert('e' == get_pretty_function_at<double, 55>(), "invalid symbol");
R>static_assert('b' == get_pretty_function_at<std::string, 64>(), "invalid symbol");
R>проапдейтим.
https://ideone.com/n7BbaZ
static_assert("1"[0] == '1', "It is not a compiletime array");Вообще, я тут должен кое что уточнить, в gcc есть возможность работать со строковыми литералами в компайл тайм.
что неплохо используется в MPLLIB И вполне парсить их,
https://github.com/sabel83/mpllibs/blob/master/libs/safe_printf/example/validate/main.cpp
я даже часть парсера регулярок реализовывал на базе этого.
Но вот именно в преттифанкшин, эта странность, что сделать из него параметр шаблона — не выходит. Хотя просто хотелось бы просто сделать из нее параметр для для прагмы мессадж ..