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'參數。 –
我很驚訝你的編譯器給你這個錯誤。我給了我「綁定const int到類型int和拋棄限定符的引用」。 – SingerOfTheFall
如果它給出*歧義*錯誤,那麼我認爲這個錯誤是**誤導**,因爲它們都不能用'int const'類型的參數'j'調用。編譯器應該給*「沒有找到接受'int const&'」*的函數。 – Nawaz