を含むクラスstd::vector<Foo>
です。Foo
Foo( Foo&& ) noexcept
コンテナーへのオブジェクトの追加は問題なく機能しますが、使用してそれらを消去することstd::vector::erase( iterator )
はできません。GCC 4.7 は、削除した代入演算子を呼び出そうとします。正確なエラー メッセージは次のとおりです。
エラー: 削除された関数 'Foobar& Foobar::operator=(const Foobar&) の使用
編集:もちろんstd::vector
、コピー コンストラクターではなく、代入演算子を呼び出します (エラー メッセージでも確認できます)。説明で修正しました、すみません。
要求されたソース コードの例を次に示します。
#include <vector>
class Foo {
public:
Foo() {}
Foo( Foo&& other ) noexcept {}
Foo( const Foo& ) = delete;
Foo& operator=( const Foo& ) = delete;
};
int main() {
std::vector<Foo> v;
v.push_back( Foo{} );
v.erase( v.begin() );
}