1

これは、私が取り組んでいるユース ケースの小さいバージョンです。

#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 をコンパイルすると、次のエラーが発生します。

error C2280: 'Foo<float>::Foo(const Foo<float> &)': attempting to reference a deleted function
note: see declaration of 'Foo<float>::Foo'

私は周りを見回して、これには2つの理由のうちの1つがあるのではないかと疑っていました.

std::mutex1)削除されたコンストラクターメンバーのコピー

2)これは、私が見ているものと似ているかもしれないと思いました。

どちらですか?VS 2015 Update 2 コンパイラによってスローされるこのエラーを回避するにはどうすればよいですか?

UPDATE : に渡す必要があるいくつかのパラメーターを受け取るコンストラクターを更新しましたFoo_typedef

4

1 に答える 1