#include <string>
void f(std::string&& rref){
}
void f(std::string s){
}
int main() {
std::string s = "s";
f(std::move(s));
}
Ten kod powoduje niejednoznaczność i nie wiem dlaczego, być może, dokonałem wyraźnej konwersji na odniesienie rvalue.Niejednoznaczność w wywołaniu funkcji. Implicit konwersji?
Moja idea jest taka, że RValue odniesienia może być niejawnie konwertowane tylko lwartość. Ale nie jestem pewien. Proszę wytłumacz.
Jaka jest niejednoznaczność? Czy był komunikat o błędzie kompilatora? –
Powtórzono błąd niejednoznaczności: 'błąd: wywołanie przeciążenia 'f (std :: remove_reference &> :: type)' jest niejednoznaczny. Uwaga: kandydatami są: ... –
Ziezi
Dlaczego potrzebne są dwa oddzielne przeciążenia tutaj? –