Ces constructeurs sont-ils corrects? Sont-ils bien formés et correctement surchargés à la fois pour les valeurs et les valeurs?Ces constructeurs sont-ils corrects?
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))}
{}
Êtes-vous sûr de 'noexcept'? 'make_shared' doit généralement allouer de la mémoire, et c'est une opération qui n'est pas 'noexcept'. – j6t
@ j6t: totalement oublié le 'std :: shared_ptr' et concentré sur' std :: string', whoops :) –