我正在尝试使用 bind 来生成一个函数:
- 收到地图 m
- 返回 m.begin()->first
为此,我正在尝试使用 boost::bind:
typedef map<int,int>::const_iterator (map<int,int>::*const_begin_end) () const;
bind(&pair<const int,int>::first, bind(static_cast<const_begin_end>(&map<int, int>::begin), _1));
这不起作用,因为需要取消引用 begin 的结果。我想像
bind(&pair<const int,int>::first, bind(&operator*, bind(static_cast<const_begin_end>(&map<int, int>::begin), _1)));
但这行不通,因为没有全局运算符*。
问题:
- 是否可以使用 boost::bind 复合链来实现这一点?如何?
- 更容易阅读的替代方案?