Почему BOOST_FOREACH на карте работает только с typedef

Я пытался написать простой цикл map<int, int>элемент, и мне интересно, почему 1-й синтаксис, который я использовал, не работает / компилируется?

Первая версия, которую я написал, была следующей, и она не компилируется с VS’2008 / boost версии 1.44:

std::map<int, int> myMap;
...
BOOST_FOREACH(map<int, int>::value_type &p, myMap)
{
}

Теперь, если я переписываю код, как показано ниже, компиляция в порядке, но почему?

typedef std::map<int, int> myMap_t;
myMap_t myMap;
...
BOOST_FOREACH(myMap_t::value_type &p, myMap)
{
}

5

Решение

Это макрос препроцессора, и ему не нравится , в map<int, int>,

12

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]