为什么地图上的BOOST_FOREACH只能使用typedef

时间:2014-03-18 13:38:52

标签: c++ boost boost-foreach

我试图通过map<int, int>元素编写一个简单的循环,我想知道为什么我使用的第一个语法不起作用/编译?

我写的第一个版本如下,它不能用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)
{
}

1 个答案:

答案 0 :(得分:12)

它是一个预处理器宏,它不像,中的map<int, int>