The following code compiles with gcc-4.5.1 but not in 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 is now mapped to std::array<> troll. The insertion works well and the program compiles. But, as soon as i try auto z = x[1] -> Therefore trying to get the array troll that 1 is mapped to, the program does not compile with the following error:
error C2512: 'std::array<_Ty,_Size>::array' : no appropriate default constructor available
What causes this difference in behavior between gcc and vs11 and how to fix it ?
Thanks.