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
是任何成員,只要它們被引用。
如何避免此代碼重複?