停止调用移动赋值C++;11 考虑一个不希望修改的简单C++类: class foo {};

停止调用移动赋值C++;11 考虑一个不希望修改的简单C++类: class foo {};,c++,c++11,C++,C++11,然后,如果执行以下操作,我将调用移动分配操作符: foo f{}; f = foo{}; 有没有一种方法可以在不修改foo或使用中间g的情况下调用复制分配,如下所示: foo f{}; foo g{}; f = g; 几乎就好像有std::别动 你可以写: f = static_cast<foo const&>(foo{}); f=static_cast(foo{}); std::dont\u move()很容易自己实现: template <typename

然后,如果执行以下操作,我将调用移动分配操作符:

foo f{};

f = foo{};
有没有一种方法可以在不修改
foo
或使用中间
g
的情况下调用复制分配,如下所示:

foo f{};
foo g{};
f = g;
几乎就好像有
std::别动

你可以写:

f = static_cast<foo const&>(foo{});
f=static_cast(foo{});
std::dont\u move()
很容易自己实现:

template <typename T>
const T& force_copy(T&& v)
{
    return v;
}
模板
施工图和力图副本(T&v)
{
返回v;
}

参见

您能详细说明您的实际问题吗?在这种情况下,为什么不需要移动语义呢?只是想知道,如果不使用(比如)显式引用,std::move的对立面是否可以实现。为什么要这样?听起来好像你有一个想要隐藏的bug。你是想
删除移动分配,还是只是有时候确保它复制?@doctorlove,有时候确保它复制