代入演算子の複数の方法を定義したいと思います。最小限のサンプルコード。
enum class AssignType {
DeepCopy,
SharedCopy
};
struct Container
{
const char* x;
template<AssignType >
Container& operator=(const Container& other) {
x = other.x; return *this;
}
// ...some specialisations of operator=() could be made
};
int main()
{
Container i1, i2;
i2.operator=<AssignType::DeepCopy>(i1);
i2 =<AssignType::DeepCopy> i1; // line 20
return 0;
}
g++ のパーサーで 20 行目のエラーが表示されます。明示的なテンプレートで "短い" 形式 (20 行目など) の演算子を使用する方法はありますか? C++11 が許可されています。