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.