Ho qualche problema con constexpr
. Il libro C++ Primer mostra una riga di codice:L'uso della funzione constexpr prima della definizione non riesce
constexpr int sz = size(); // only size() is a constexpr function
// this code is right
Tuttavia il libro non dà un esempio specifico. Così provo il seguente codice da me:
#include <iostream>
constexpr int fun();
int main()
{
constexpr int f = fun();
std::cout << f << std::endl;
}
constexpr int fun()
{
return 3;
}
Ma il mio compilatore detto fun()
non è definito.
Se cambio constexpr
in const
, funziona bene, e se cambio il mio codice per definire la funzione constexpr prima dell'uso:
#include <iostream>
constexpr int fun()
{
return 3;
}
int main()
{
constexpr int f = fun();
std::cout << f << std::endl;
}
funziona anche bene. Qualcuno può dirmi perché?
Che compilatore usi? – kvorobiev
@kvorobiev clang, linux – icecity96
Quale versione di clang? – kvorobiev