Информация об изменениях

Сообщение Re[10]: имя переменной в компайл-тайм от 18.03.2018 11:59

Изменено 18.03.2018 12:00 rg45

Re[10]: имя переменной в компайл-тайм
Здравствуйте, ollv, Вы писали:

O>__PRETTY_FUNCTION__ — не компайлтайм сущность, все. Инче всавьте это в компайлтайм параметром, в отличие от __FUNCSIG__ (в остальном они эквиваленты, дает сигнатуру фанкшина в момент инстанциации). Говорить тут больше не о чем.


__PRETTY_FUNCTION__ — компайлтайм сущность (не прероцессор, но компайл тайм):

https://ideone.com/axqWj0

#include <iostream>

template <typename T>
constexpr size_t get_pretty_function_size()
{
  return sizeof(__PRETTY_FUNCTION__);
}

static_assert(87 == get_pretty_function_size<int>(), "invalid size");
static_assert(90 == get_pretty_function_size<double>(), "invalid size");
static_assert(116 == get_pretty_function_size<std::string>(), "invalid size");

int main()
{
}
Re[10]: имя переменной в компайл-тайм
Здравствуйте, ollv, Вы писали:

O>__PRETTY_FUNCTION__ — не компайлтайм сущность, все. Инче всавьте это в компайлтайм параметром, в отличие от __FUNCSIG__ (в остальном они эквиваленты, дает сигнатуру фанкшина в момент инстанциации). Говорить тут больше не о чем.


__PRETTY_FUNCTION__ — компайлтайм сущность (не прероцессор, но компайл тайм):

https://ideone.com/axqWj0

#include <iostream>

template <typename T>
constexpr size_t get_pretty_function_size()
{
  return sizeof(__PRETTY_FUNCTION__);
}

static_assert(87 == get_pretty_function_size<int>(), "invalid size");
static_assert(90 == get_pretty_function_size<double>(), "invalid size");
static_assert(116 == get_pretty_function_size<std::string>(), "invalid size");