如何在不引用 std::move 或 std::swap 的情况下实现移动功能?

问题描述 投票:0回答:2

如何在不参考

std::move
std::swap
的情况下实现移动功能?

什么是STL可接受的标准函数原型,以及如何使用它?

请举个例子。我尝试搜索 StackOverflow。

我想为项目中没有任何 STL 引用的类实现此功能(而且一定不能!)。但是,在一个测试项目中,我使用STL。 StackOverflow 中的任何内容都会引用

std::move
std::swap
函数。我必须避开它们才能实现这两个目标。

c++ std move
2个回答
0
投票

std::move()
是通过投射到
T&&
来完成的。您可以手动施法,或创建自己的移动函数:

template <typename T>
constexpr T&& move(T& t) noexcept
{
    return static_cast<T&&>(t);
}

-2
投票

这足够了吗?是否应该实现另一个功能?

MyClass(MyClass&& o)
{
    memcpy(this, &o, sizeof(MyClass));    
};

谢谢你,约翰! 修改为:

MyClass& operator=(const MyClass && o) noexcept
{
    memcpy(this, &o, sizeof(MyClass));
    return *this;
}

够好吗?

© www.soinside.com 2019 - 2024. All rights reserved.