1
与How do I remove code duplication between similar const and non-const member functions?类似,我想删除几乎相同的成员函数之间的代码重复,除了ref修饰符。如何删除类似的ref-qualified成员函数之间的代码重复?
比方说,我有一个类,是这样的:
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
是任何成员,只要它们被引用。
如何避免此代码重复?