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.

関数の定義をする前に関数を呼ぶことはできないのでしょうか?

言葉が間違っているかもしれませんが、コンパイル時に計算するといことはリンカが関数を探す前に関数が呼ばれていて未定義関数のエラーが出ているのでしょうか?