기본 이동 구성자가 작성되지 않은 MSVC 컴파일러에 알려진 버그가 있습니다.std :: std :: unique_ptr을 stl 컨테이너로 이동합니다. (MSVC 컴파일러 문제)
std::vector<std::unique_ptr<User>> users;
{
// I use this logic often (create a temporary object and move it into stl container
auto new_user=make_unique<User>();
users.push_back(std::move(new_a));
}
users.back()->FirstName="Should";
users.back()->LastName="Work";
std::cout << "First Name: " << users.back()->FirstName << std::endl;
:이 같은 수업을하고이 시나리오에서 작동 할 무언가로 변환 어떻게
struct User {
std::string FirstName;
std::string LastName;
std::string Address;
std::string PostalCode;
std::string City;
std::vector<std::unique_ptr<ProjectBase>> Projects;
};
을 :
문제는 내가 이것에 유사 클래스의 여지가있다
위 코드는 Windows Phone 8에서 작동하지 않지만 (이동 생성자가 없기 때문에) Visual Studio 2012 (v110) 툴킷으로 작동합니다.
Windows Phone 8에서 작동 할 수 있도록 이동 생성자가있는 경우 내 사용자 클래스는 어떻게 생겼을까요?
'push_back (make_unique())'을 수행하는 대신에'make_unique'라는 변수 폼을 만드는 이유가 있습니까? –
'User (User &&) = default;'시도 했습니까? –
@VaughnCato : MSVC는 아직 지원하지 않습니다. –