#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();
}
Я тестировал код с VС++ 14.2 и GCC 5.4.0, оба из них выводят:
A(B &&)
Почему вывод не
A(const B &)
?
Имеет ли этот код какое-либо отношение к copy elision
? (Но A и B - разные типы, поэтому copy elision
здесь не должно работать)