上級 › テンプレートの型推論失敗で no matching function になる原因 › パターン2
テンプレートの型推論失敗で no matching function になる原因
テンプレート関数の2つの引数に異なる型を渡したときに出るエラーです。
1 #include <iostream> 2 template <typename T> 3 T maxOf(T a, T b) { 4 return a > b ? a : b; 5 } 6 int main() { 7 std::cout << maxOf(10, ___) << std::endl; ^ 8 return 0; 9 }
main.cpp:7:23: error: no matching function for call to 'maxOf(int, double)'
空欄を埋めてコンパイル・実行を通す
テンプレートは呼び出しごとに具体的な型を1つに確定できて初めてコンパイルが通ります。10はint、3.5はdoubleで型が異なるため、コンパイラはTを1つに決められません。
次の問題