ISO/IEC 14882:2011(E) の 8.3.5.11 から:
関数型の typedef は、関数を宣言するために使用できますが、関数を定義するために使用してはなりません
標準は、次の例を示しています。
typedef void F();
F fv; // OK: equivalent to void fv();
F fv { } // ill-formed
void fv() { } // OK: definition of fv
このルールの動機は何ですか? 関数 typedef の潜在的な表現上の有用性を制限しているようです。