私は変更したくない簡単なC++クラス考えてみましょう:ストップr値を呼び出す移動割り当てC++ 11
foo f{};
f = foo{};
:私は移動代入演算子を呼び出す以下ならば
class foo {};
をその後に
foo f{};
foo g{};
f = g;
:
このような中間g
をfoo
を変更または使用せずにコピー代入を起動する方法はあります
std::dont_move
とほぼ同じです!
私は変更したくない簡単なC++クラス考えてみましょう:ストップr値を呼び出す移動割り当てC++ 11
foo f{};
f = foo{};
:私は移動代入演算子を呼び出す以下ならば
class foo {};
をその後に
foo f{};
foo g{};
f = g;
:
このような中間g
をfoo
を変更または使用せずにコピー代入を起動する方法はあります
std::dont_move
とほぼ同じです!
std::dont_move()
は、自分で実装するのは簡単です:
template <typename T>
const T& force_copy(T&& v)
{
return v;
}
私はこの解決策が好きです。 – keith
あなたが書くことができます。
f = static_cast<foo const&>(foo{});
を参照してください、あなたが持っている*実際の*問題について詳しく説明していただけますか? *なぜ*あなたはこの場合に移動セマンティクスを望んでいないのですか? –
std :: moveの反対が、例えば明示的な参照を使わずに可能であるかどうかだけ疑問です。 – keith
なぜそれが欲しいですか?あなたが隠そうとしているバグがあるようです。 – juanchopanza