Я бы постарался вообще не использовать кодовую панель.
Я провел пару тестов с вашим кодом, и кажется, что
- это добавление неявного (и нежелательного)
using namespace std
- это не требует от вас квалификации map
, cout
или endl
.
- (вероятно) включает в себя больше стандартных заголовков, чем вы могли бы хотеть, включая
#include <list>
.
Это означает, что когда компилятор смотрит на код, он видит две list
, вашу версию и одну в std
. Из-за директивы using оба находятся в области видимости в строке, где вы создаете карту, и компилятор не может определить, какой из них использовать.
Две простые вещи, которые вы можете сделать: измените имя вашего типа для простого теста на что-то отличное от list
(оу! Инструмент, заставляющий ваш выбор имен!) Или полностью определите использование:
#include <map>
struct list {
int a,b;
};
std::map< int, ::list > the_map;
// ...
Обратите внимание, что codepad добавляет включение сам по себе и директиву using, поэтому он также скомпилирует:
struct list {
int a,b;
};
map<int,::list> the_map;
Но этот кусок кода неправильный