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