#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();
}
Là coll
an xvalue
trong return A{ coll };
?C++ 11 có đảm bảo biến cục bộ trong câu lệnh trả về sẽ được di chuyển thay vì sao chép không?
Đảm bảo C++ 11 A(vector<int>&&)
sẽ được gọi khi f
trả về?
Trong ví dụ của bạn, 'A {coll}' sẽ được xây dựng trong ngữ cảnh người gọi và sẽ sử dụng hàm tạo 'A (const vector &)'. – Oliv