#include <vector>
using namespace std;
struct A
{
A(const vector<int>&) {}
A(vector<int>&&) {}
};
A f()
{
vector<int> coll;
return A{ coll }; // Which constructor of A will be called as per C++11?
}
int main()
{
f();
}
coll
xvalue
return A{ coll };
?C++ 11은 return 문에서 지역 변수가 복사되지 않고 이동된다는 것을 보장합니까?
f
이 반환 될 때 C++ 11 보증 A(vector<int>&&)
이 호출됩니까?
예에서 'A {coll}'는 호출자 컨텍스트에서 생성되고 A (const vector &) 생성자를 사용합니다. – Oliv