Благодаря @ rafix07:
Решение:
A<double> B::test{0.0};
"мьютекс не является ни копируемым, ни подвижным, это означает, что все операции копирования и перемещения по умолчанию удаляются (для класса, которыйсодержит мьютекс как переменную данных)
A(const A&) = delete,
A(A&&) = delete
и т. д. При вызове
A<double> B::test = 0.0
двойное значение 0.0 преобразуется в
A<double>(0.0)
, поэтому у вас есть
A<double> B::test = A<double>(0.0)
, поскольку конструкция копии удалена, компилятор отклоняет эту строку. С {} вы просто вызываете конструктор A (0.0) без какого-либо синтаксиса копирования. "@ rafix07