如何在不参考
std::move
或std::swap
的情况下实现移动功能?
什么是STL可接受的标准函数原型,以及如何使用它?
请举个例子。我尝试搜索 StackOverflow。
我想为项目中没有任何 STL 引用的类实现此功能(而且一定不能!)。但是,在一个测试项目中,我使用STL。 StackOverflow 中的任何内容都会引用
std::move
或 std::swap
函数。我必须避开它们才能实现这两个目标。
std::move()
是通过投射到 T&&
来完成的。您可以手动施法,或创建自己的移动函数:
template <typename T>
constexpr T&& move(T& t) noexcept
{
return static_cast<T&&>(t);
}
这足够了吗?是否应该实现另一个功能?
MyClass(MyClass&& o)
{
memcpy(this, &o, sizeof(MyClass));
};
谢谢你,约翰! 修改为:
MyClass& operator=(const MyClass && o) noexcept
{
memcpy(this, &o, sizeof(MyClass));
return *this;
}
够好吗?