ここでは、私が取り組んでいるより小さなバージョンのユースケースです。クラスのコピーコンストラクタが削除されたときに、クラスの配列メンバーを初期化する
#include <mutex>
template<typename T = float>
class Foo
{
public:
Foo(int x, int y):m_mutex(){}
private:
std::mutex m_mutex; // This is must have in my project
};
typedef Foo<float> Foo_typedef;
class Func
{
public:
static Foo_typedef static_array[2];
};
Foo_typedef Func::static_array[2] = { Foo_typedef(2,3), Foo_typedef(2,3) };
int main()
{
return 0;
}
このVS 2015 Update 2をコンパイルすると、次のエラーが発生します。
私は周りを見回し、2つの理由の1つがあるかもしれないと考えました。 std::mutex
ため
1)コピーコンストラクタメンバーは
2)私は、私が見ていたものと似ているかもしれないと思ったThisが削除されます。
どれですか? VS 2015 Update 2コンパイラによってスローされたこのエラーを回避するにはどうすればよいですか?
UPDATE:Foo_typedef
に渡す必要があるいくつかのパラメータを取り込むコンストラクタが更新されました。
イニシャライザを削除するだけでいいですか? 'Foo_typedef Func :: static_array [2];' –
'Foo_typedef Func :: static_array [2] {};' –