私はこのコードを持っている:C5027「削除済みとして移動代入演算子を暗黙的に定義された」
template < typename TFunc >
class Foo
{
public:
Foo(TFunc func) : func_(func) {}
Foo(Foo<TFunc> const &) = delete;
Foo<TFunc> & operator=(Foo<TFunc> const &) = delete;
Foo(Foo<TFunc> &&) = default;
Foo<TFunc> & operator=(Foo<TFunc> &&) = default;
private:
TFunc func_;
};
int main()
{
auto func = []() {};
auto f = Foo<decltype(func)>(func);
return 0;
}
私は/Wall
フラグ付きのVisual Studio 2015でこのコードをコンパイルすると、私は次の警告を得る:
C5027 'Foo<main::<lambda_e5404f82e4b38ca1d164ce09039df46c>>': move assignment operator was implicitly defined as deleted
を
移動代入演算子が明示的にデフォルトとして定義されている間に、暗黙的に削除として定義される理由はわかりません。何か案が?
あなたのVS2015のインストールを最新の状態に保つことは非常に重要です。このバグはアップデート1で修復されました。 –
私はバージョン14.0.25431.01アップデート3を持っています、それは最新バージョンですか? – user1735003
私はこの警告も受け取ります( '/ Wall'と一緒に)。 – molbdnilo