コンパイラ エラー C2896
'function1' : 関数テンプレート 'function2' を引数として使用できません
関数テンプレートを別の関数テンプレートの引数にすることはできません。
このエラーは、Visual Studio 2022 以降のバージョンでは廃止されています。
次の例では C2896 が生成されます。
// C2896.cpp
template<class T1, class T2> void f1(void(*)(T1, T2));
template<class T1, class T2> void f2(T1, T2);
int main() {
f1(f2); // C2896
}
C2896 は、ジェネリックを使用する場合にも発生する可能性があります。
// C2896b.cpp
// compile with: /clr
generic<class T1> void gf1(T1){}
generic<class T1> void gf2(T1){}
int main() {
gf1(gf2); // C2896
gf1(1); // OK
}