Code::Blocks の下で GNU GCC Compiler を使用しています。
int foo(long s){cout<<"long"<<endl;return 0;}
int foo(float s){cout<<"float"<<endl;return 0;}
int main()
{
double a(3.2);
foo(a);
return 0;
}
これによりあいまいなエラーが発生することはわかっていますが、ビルドメッセージが教えてくれます
error: call of overloaded 'foo(double&)' is ambiguous
上記のように、参照ではなく double 変数の値で引数を渡しました。
そして、 const double を使用するたびに:
foo(3.2); // enclosed in main function
ビルド メッセージには、次のようなエラーが表示されます。
error: call of overloaded 'foo(double)' is ambiguous.
なぜこれが起こっているのだろうか。
double 変数と const double では、受け渡しのプロセスが同じではありませんか?
前もって感謝します。