以下代码使用 gcc-4.5.1 编译,但在 Visual Studio 11 中不编译。
#include <map>
#include <array>
typedef std::pair<const unsigned int, std::array<const unsigned int, 4>> pairus;
int main(){
std::map<const unsigned int, std::array<const unsigned int, 4> > x;
std::array<const unsigned int, 4> troll = {1, 2, 3, 4};
x.insert(pairus(1, troll));
auto z = x[1];
}
1 现在映射到std::array<> troll
. 插入效果很好,程序可以编译。但是,一旦我尝试auto z = x[1]
-> 因此尝试获取1
映射到的数组巨魔,程序不会编译并出现以下错误:
error C2512: 'std::array<_Ty,_Size>::array'
: 没有合适的默认构造函数可用
是什么导致了 gcc 和 vs11 之间的这种行为差异以及如何解决它?
谢谢。