Je veux écrire une fonction évaluée au moment de la compilation, qui prend un pointeur sur un tableau de 4 octets, et sort un int qui a la même configuration binaire que ce tableau. Donc j'ai trouvé :
constexpr int f(const char* p) {
return *reinterpret_cast<int*>(p);
}
Ensuite, je veux utiliser f()
comme ça :
switch(x) {
case f("GOOG"):
// do something
case f("MSFT"):
// do something
case f("NIKE"):
// do something
}
Cependant, j'ai obtenu une erreur de compilation :
error: accessing value of ‘"GOOG"’ through a ‘int’ glvalue in a constant expression case f("GOOG")
- Comment réparer
f()
pour qu'il compile ? - Y a-t-il un meilleur moyen d'atteindre le même objectif ?