我对这部分代码有一个问题:
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也编译了这段代码,但Visual studio从2012年11月开始使用cl失败了,错误代码是:
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标准?我找不到任何关于这方面的信息,也不知道我应该责怪哪个编译器。提前感谢您的帮助。
诚挚的问候。
发布于 2013-04-23 20:11:35
正如我所说的,VS2012有点蹩脚,在使用C++11方面有一些困难,如果你想要一个列表,可以看看here。
https://stackoverflow.com/questions/16168987
复制相似问题