Mam problem z constexpr
. Książka C++ Primer przedstawia linię kodu:Użycie funkcji constexpr przed zakończeniem definicji
constexpr int sz = size(); // only size() is a constexpr function
// this code is right
Jednak książka nie dać konkretny przykład. Więc staram następujący kod sam:
#include <iostream>
constexpr int fun();
int main()
{
constexpr int f = fun();
std::cout << f << std::endl;
}
constexpr int fun()
{
return 3;
}
Ale mój kompilator powiedział fun()
jest niezdefiniowany.
Jeśli zmienię constexpr
do const
, to działa dobrze, a jeśli mogę zmienić kod w celu określenia funkcji constexpr przed użyciem:
#include <iostream>
constexpr int fun()
{
return 3;
}
int main()
{
constexpr int f = fun();
std::cout << f << std::endl;
}
Działa również dobrze. Czy ktoś może mi powiedzieć, dlaczego?
Jakiego używanego kompilatora? – kvorobiev
@kvorobiev clang, linux – icecity96
Która wersja clang? – kvorobiev