Visual Studio 11 компилирует -ошибка времени при использовании std ::map

Следующий код компилируется с помощью 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 и как это исправить?

Спасибо.

6
задан ScarletAmaranth 6 May 2012 в 00:18
поделиться