関数のコンパイルをトリガーしてはならないこの質問に対する公式の回答を得ました。実際、宣言されているが定義されていない関数は正当です。decltype
decltype
次の質問は、関数のアドレスを取得すると、関数のコンパイルがトリガーされますか? この例を見てください:
template <typename T>
void foo(T&& x) { x.func(); }
int main()
{
auto bar = &foo<int>;
}
私がテストしたすべてのコンパイラは、次のようなエラーで失敗します。
非クラス タイプの のメンバー
func
の要求x
int
しかし、定義するだけfoo
で宣言しないと、コードは正常にコンパイルされます。関数のアドレスを取得するためにコンパイルが必要かどうかについて、誰かが公式の情報源を提供してくれますか?