4
void f(int & i){
cout << "l-value-ref" << endl;
}
void f(int && i){
cout << "r-value-ref" << endl;
}
上記のコードを前提とすると、それぞれl値参照とr値参照のパラメータをとるオーバーロードされた関数があります。l値参照とr値参照におけるバインディングエラー
int x = 5;
f(x);
f(5);
const int j = 9;
f(j);
私はのconst int型J = 9コンパイラが曖昧エラーを与える使用しています。どうすればこの問題を解決できますか?
'f()'を 'const int&i'パラメータに変更します。 –
私はあなたのコンパイラがあなたにそのエラーを与えるのに驚いています。私の場合は、 "int型の参照にバインディングconst intを代入し、修飾子を破棄"します。 – SingerOfTheFall
* ambiguity *エラーが出た場合、どちらも 'int const'型の引数' j'で呼び出すことができないので、このエラーは誤解を招く**と思います。コンパイラは* "int const&' "*を受け付ける関数が見つかりません。 – Nawaz