中級 › error: call of overloaded '...' is ambiguous の原因と直し方 › パターン3
error: call of overloaded '...' is ambiguous の原因と直し方
同じ名前の関数が複数のオーバーロードを持ち、渡した引数の型からどちらを呼ぶべきかコンパイラが一意に決められないときに出るエラーです。
1 #include <iostream> 2 void log_(long x) { std::cout << "long:" << x << std::endl; } 3 void log_(unsigned long x) { std::cout << "unsigned long:" << x << std::endl; } 4 int main() { 5 log_(___); ^ 6 return 0; 7 }
main.cpp:5:9: error: call of overloaded 'log_(int)' is ambiguous
空欄を埋めてコンパイル・実行を通す
Lサフィックスを付けてリテラルの型そのものをlongにしてしまえば、変換の必要が無くなり曖昧さが解消します。
次の問題