Ist constexpr ein "Hinweis" (wie Inline) oder eine "verbindliche Anfrage" an den Compiler?
Istconstexpr
Ein Indikator für den Compiler oder ein Verhalten?
Das vorliegende Beispiel ist das folgende:
template<typename T>
std::size_t constexpr getID() { return typeid(T).hash_code(); }
hash_code
ist eine Laufzeitkonstante, dennoch würde dieses Snippetkompilieren obwohl mit eine Kompilierzeitauswertung angefordert wirdconstexpr
. Erst wenn der Rückgabewert verwendet wird, bei dem eine Kompilierzeitkonstante erwartet wird, wird dies bemerktist nicht als Constexpr-Funktion verwendbar.
So ist es auchconstexpr
ein "Hinweis" (ähnlich wie derinline
Stichwort) oder "eine verbindliche Anfrage" an den Compiler?