私はこのようなクラスを持っています:
template<typename T>
class MyClass
{
public:
// ...
T && operator()(uint64_t i, uint64_t j); // I want to add a member function like this.
T & operator()(uint64_t i, uint64_t j);
const T & operator()(uint64_t i, uint64_t j) const;
// ...
};
T
コードを修正しているときに、オブジェクトを位置に設定しようとするたびに、タイプの格納されたオブジェクトがコピーされていることに気付きました(i,j)
。移動セマンティクスを使用して、可能であればこの不要なコピーを回避したいですか? 上記のコードのように 3 番目の演算子を追加することでこれを解決することは可能ですか?
私の目的はMyClass
、コードで次のようなインスタンスにアクセスすることです。
MyClass<Element> myclass;
// ...
Element element; // 'Element' is movable.
// ...
myclass(2, 3) = std::move(element); // 'element' is no longer needed, it can be moved.
これどうやってするの?