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

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


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>>


O> проапдейтим.

O>https://ideone.com/n7BbaZ
O>

O>  static_assert("1"[0] == '1', "It is not a compiletime array");

O>

O> Вообще, я тут должен кое что уточнить, в gcc есть возможность работать со строковыми литералами в компайл тайм.
O>что неплохо используется в MPLLIB И вполне парсить их,
O>https://github.com/sabel83/mpllibs/blob/master/libs/safe_printf/example/validate/main.cpp
O>я даже часть парсера регулярок реализовывал на базе этого.
O> Но вот именно в преттифанкшин, эта странность, что сделать из него параметр шаблона — не выходит. Хотя просто хотелось бы просто сделать из нее параметр для для прагмы мессадж ..
Хотя, возможно конечно из него сделать — тот-же коспайл тайм стринг, я не пробовал .. сейчас не досуг. наверное распарсится, без проблем. Скорее он просто как литерал вкомпилируется в .o.
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.