struct TestConstRef {
std::string str;
Test(const std::string& mStr) : str{mStr} { }
};
struct TestMove {
std::string str;
Test(std::string mStr) : str{std::move(mStr)} { }
};
После просмотра GoingNative 2013 я понял, что аргументы приемника всегда должны передаваться по значению и перемещаться с помощью std::move
. Является ли TestMove::ctor
правильным способом применения этой идиомы? Есть ли случай, когда TestConstRef::ctor
лучше/эффективнее?
Как насчет тривиальных сеттеров? Должен ли я использовать следующую идиому или передать const std::string&
?
struct TestSetter {
std::string str;
void setStr(std::string mStr) { str = std::move(str); }
};