コードのこの部分に問題があります:
typedef std::array<u32, 3> my_array;
void foo()
{
my_array a1{{1, 2, 3}};
a1 = {{1, 2, 3}}; // PROBLEM - does not work;
my_array a2{{3, 2, 1}};
a1 = a2;
}
GCC 4.7 もこのコードをコンパイルしますが、2012 年 11 月の cl を使用した Visual studio は次のエラーで失敗します。
error C2679: binary '=' : no operator found which takes a right-hand
operand of type 'initializer-list' (or there is no acceptable
conversion) 1> C:\Program Files (x86)\Microsoft Visual Studio
11.0\VC\INCLUDE\array(211): could be 'std::array<u32,3> &std::array<u32,3>::operator =(const std::array<u32,3> &)' 1>
while trying to match the argument list '(my_array, initializer-list)'
この構文は正しく、c++11 標準に準拠していますか? これに関する情報を見つけることができず、どのコンパイラを非難すべきかわかりません。助けてくれてありがとう。
よろしくお願いします。