Ich möchte den Namen eines Typs zur Kompilierzeit verwenden. Angenommen, die ich geschrieben habe:Kann ich C++ Typnamen in einem conexpr Weg erhalten?
constexpr size_t my_strlen(const char* s)
{
const char* cp = s;
while(*cp != '\0') { cp++; };
return cp - s;
}
und jetzt will ich muß:
template <typename T>
constexpr auto type_name_length = my_strlen(typeid(T).name());
Aber leider typeid(T).name()
ist nur const char*
, constexpr nicht ... gibt es einen anderen, constexpr Weg um den Namen eines Typs zu bekommen?
Was haben Sie mit 'type_name_length' zu tun, dass Sie es zur Kompilierzeit brauchen? Compiler sind ziemlich gut darin, nur 'strlen()' zu bewerten und Ihnen eine Konstante zu geben, wenn das möglich ist. –
Barry
@Barry: Ich wollte nur einen MCVE hier, also habe ich einen synthetischen Gebrauch gemacht. – einpoklum
@einpoklum Das ist gut; aber das Hinzufügen eines Kommentars, dass in der Frage (das ist nur ein MCVE, ich versuche wirklich X) ist auch gut. – Yakk