#include<iostream>
using namespace std;
struct B{};
struct A
{
A(const B &)
{
cout<<"A(const B &)"<<endl;
}
A(B &&)
{
cout<<"A(B &&)"<<endl;
}
};
A get()
{
B b;
return b;
}
int main()
{
get();
}
J'ai testé le code avec VC ++ 14.2 et GCC 5.4.0, les deux sorties:
A(B &&)
Pourquoi la sortie n'est-elle pas
A(const B &)
?
Ce code a-t-il une relation avec copy elision
? (Mais A et B sont des types différents, donc copy elision
ne devrait pas fonctionner ici)