停止调用移动赋值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,有时候确保它复制