Я хотел бы использовать имя типа во время компиляции. Например, предположим, что я написал:Могу ли я получить имена типов C++ в режиме constexpr?
constexpr size_t my_strlen(const char* s)
{
const char* cp = s;
while(*cp != '\0') { cp++; };
return cp - s;
}
и теперь я хочу, чтобы иметь:
template <typename T>
constexpr auto type_name_length = my_strlen(typeid(T).name());
Но увы, typeid(T).name()
просто const char*
, не constexpr ... есть другие, constexpr путь получить имя типа?
Что вы намерены делать с 'type_name_length' что вам нужно во время компиляции? Компиляторы довольно хорошо оценивают 'strlen()' и дают вам константу, если это возможно. –
Barry
@Barry: Мне просто нужен MCVE здесь, поэтому я придумал синтетическое использование. – einpoklum
@einpoklum Это хорошо; но добавив комментарий, говорящий, что в вопросе (это всего лишь MCVE, я действительно пытаюсь X) тоже хорошо. – Yakk