這些構造函數是否正確?這些構造函數是否正確?
它們是否形成良好並正確地重載了左值和右值?
std::shared_ptr<std::string> data;
// lvalue constructor
Obj(std::string const & p_data)
: data {std::make_shared<std::string>(p_data)}
{}
// rvalue constructor
Obj(std::string && p_data)
: data {std::make_shared<std::string>(std::move(p_data))}
{}
你肯定'noexcept'? 'make_shared'通常需要分配內存,這是一個不是'noexcept'的操作。 – j6t
@ j6t:完全忘記了'std :: shared_ptr',並專注於'std :: string',哎呀:) –