【发布时间】:2017-11-22 11:33:09
【问题描述】:
类似于How do I remove code duplication between similar const and non-const member functions?,我想删除几乎相同的成员函数之间的代码重复,除了 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::moves 任何成员,只要它们被引用。
如何避免这种代码重复?
【问题讨论】:
-
如果我们有 deducing this 提案就好了
标签: c++ c++11 dry code-duplication ref-qualifier