В приведенном ниже коде, почему первый решительность вызова на catchClass(aClass&)
и учитывая временный характер в качестве параметра во втором Invoke catchClass(const aClassCatcher&)
C++: специальное поведение для временных
#include <iostream>
using namespace std;
class aClassCatcher{};
class aClass{
public:
operator aClassCatcher(){
return aClassCatcher();
}
};
void catchClass(aClass&){
cout << __FUNCSIG__ << endl;
}
void catchClass(const aClassCatcher&){
cout << __FUNCSIG__ << endl;
}
int main()
{
aClass aC;
catchClass(aC); // calls catchClass(aClass&)
catchClass(aClass()); // calls catchClass(const aClassCatcher&)
}
В случае, если вы задаетесь вопросом, где я наткнулся это, я пытаюсь понять конструкторы перемещения, как описано в статье, в статье Dobb's.
Поскольку временные лица не могут связываться с неконстантными ссылками lvalue. – juanchopanza