我有这样的课:
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)
位置时,都会复制存储的类型对象。如果可能的话,我想使用移动语义并避免这种不必要的复制?是否可以通过像上面的代码中添加第三个运算符来解决这个问题?
我的目标是在代码中访问这样的MyClass
实例:
MyClass<Element> myclass;
// ...
Element element; // 'Element' is movable.
// ...
myclass(2, 3) = std::move(element); // 'element' is no longer needed, it can be moved.
我怎样才能做到这一点?