与如何在相似的const和non-const成员函数之间消除代码重复?类似,我想消除几乎相同的成员函数之间的代码重复,除了ref限定符之外。
假设我有一个类,像这样:
假设我有一个类,像这样:
class MyStringBuilder
{
std::string member;
public:
// Other functions
std::string create() const& {
// Some work
std::string result = member;
// More work
return result;
}
std::string create() && {
// Some work
std::string result = std::move(member);
// More work
return result;
}
};
对于构建器对象,我们想要这样做并不是不可思议的,因为它可以节省一个副本,如果我们完成了MyStringBuilder
的使用。
除了成员使用的地方外,const&
版本和&&
版本之间的代码是相同的。两个函数之间唯一的区别在于,&&
版本在引用任何成员时都会std::move
它们。
我该如何避免这种代码重复?