使用boost::与映射绑定

使用boost::与映射绑定,boost,bind,stdmap,Boost,Bind,Stdmap,编译失败,出现错误。 有没有关于我缺少什么的线索?映射::值类型的类型是成对的。使用以下命令: 42 1 42 2 42 4 42 5 对于每个(m.begin(),m.end(), boost::bind(&takeInt,42,boost::bind(&pair::first,_1)); ^^^^^ 映射::值类型的类型是成对的。使用以下命令: 42 1 42 2 42 4 42 5 对于每个(m.begin(),m.end(), boost::bind(&takeInt,42,boos

编译失败,出现错误。 有没有关于我缺少什么的线索?

映射::值类型的类型是
成对的。使用以下命令:

42 1
42 2
42 4
42 5
对于每个(m.begin(),m.end(),
boost::bind(&takeInt,42,boost::bind(&pair::first,_1));
^^^^^
映射::值类型的类型是
成对的。使用以下命令:

42 1
42 2
42 4
42 5
对于每个(m.begin(),m.end(),
boost::bind(&takeInt,42,boost::bind(&pair::first,_1));
^^^^^

出于好奇:你在哪里找到map::value\u类型的定义@我自己:刚刚在cpp.com上查阅了定义,它清楚地显示了value_type:'pair'@carstengreener在这种情况下我非常确定,否则我会在标准(通常是N3337草案)或库实现本身中查找它。从这一点上,我学会了始终使用typedef,除非它不可能<代码>boost::bind(&Map::value_type::first,_1)
@balki极好的结论。您的代码对更改也变得更加健壮。本质上,每次手动指定模板参数以访问嵌套类型时,都会使更改代码变得更加困难。出于好奇:map::value_类型的定义是在哪里找到的@我自己:刚刚在cpp.com上查阅了定义,它清楚地显示了value_type:'pair'@carstengreener在这种情况下我非常确定,否则我会在标准(通常是N3337草案)或库实现本身中查找它。从这一点上,我学会了始终使用typedef,除非它不可能<代码>boost::bind(&Map::value_type::first,_1)
@balki极好的结论。您的代码对更改也变得更加健壮。实际上,每次手动指定模板参数以访问嵌套类型时,都会使更改代码变得更加困难。
for_each(m.begin(),m.end(),
         boost::bind(&takeInt, 42, boost::bind(&pair<const int,int>::first,_1)));
                                                     ^^^^^