У меня проблемы с constexpr
. В книге С++ Primer показана строка кода:
constexpr int sz = size(); // only size() is a constexpr function
// this code is right
Однако книга не дает конкретного примера. Поэтому я сам пробую следующий код:
#include <iostream>
constexpr int fun();
int main()
{
constexpr int f = fun();
std::cout << f << std::endl;
}
constexpr int fun()
{
return 3;
}
Но мой компилятор сказал, что fun()
- undefined.
Если я изменяю constexpr
на const
, он работает хорошо, и если я изменю свой код, чтобы определить функцию constexpr перед использованием:
#include <iostream>
constexpr int fun()
{
return 3;
}
int main()
{
constexpr int f = fun();
std::cout << f << std::endl;
}
Он также хорошо работает. Может кто-нибудь сказать мне, почему?