停止r值调用移动赋值C++ 11

kei*_*ith 4 c++ c++11

考虑一个我不想修改的简单C++类:

class foo {};
Run Code Online (Sandbox Code Playgroud)

然后,如果我执行以下操作,我将调用移动赋值运算符:

foo f{};

f = foo{};
Run Code Online (Sandbox Code Playgroud)

有没有办法在不修改foo或使用这样的中间件的情况下调用复制赋值g:

foo f{};
foo g{};
f = g;
Run Code Online (Sandbox Code Playgroud)

差不多好像有std::dont_move!

Ros*_*ost 6

std::dont_move() 很容易自己实现:

template <typename T>
const T& force_copy(T&& v)
{
    return v;
}
Run Code Online (Sandbox Code Playgroud)

请参阅用法示例