C++ constexpr関数について
c++初学者です。
constexprを試してみたく簡単な関数を作ってみました。
#include<iostream>
constexpr int f(int);
int main(){
constexpr int a = 10;
constexpr int b = f(a);
std::cout << b << std::endl;
return 0;
}
constexpr int f(int a){
return a * a;
}
しかしこのコードをコンパイルするとコンパイルエラーになります。
ts.cpp:8:19: error: constexpr variable 'b' must be
initialized by a constant expression
constexpr int b = f(a);
^ ~~~~
ts.cpp:8:23: note: undefined function 'f' cannot be
used in a constant expression
constexpr int b = f(a);
^
ts.cpp:3:15: note: declared here
constexpr int f(int);
^
1 error generated.
関数の定義をする前に関数を呼ぶことはできないのでしょうか?
言葉が間違っているかもしれませんが、コンパイル時に計算するといことはリンカが関数を探す前に関数が呼ばれていて未定義関数のエラーが出ているのでしょうか?