上級 › error: no matching function for call to '...'(テンプレートの型推論失敗)の原因と直し方 › パターン2
error: no matching function for call to '...'(テンプレートの型推論失敗)の原因と直し方
テンプレート関数の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つに決められません。
次の問題