【问题标题】:Why BOOST_FOREACH on a map only work with a typedef为什么地图上的 BOOST_FOREACH 仅适用于 typedef
【发布时间】:2014-03-18 13:38:51
【问题描述】:

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

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

【问题讨论】:

标签: c++ boost boost-foreach


【解决方案1】:

它是一个预处理器宏,它不喜欢map&lt;int, int&gt;中的,

【讨论】:

  • @GIJoe 是的,您链接到的答案使用地图的 typedef,因此它不包含 ,
  • @Angew:啊,错过了。好收获
猜你喜欢
  • 2010-11-19
  • 2011-11-18
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 2011-10-18
  • 1970-01-01
相关资源
最近更新 更多