1

我有以下代码来合并两个 std::maps。

template <typename key, typename value>
  void merge_maps(std::map<key, value>& one, const std::map<key, value>& another,
    boost::function2<value, value, value> aggregate)
  {
    // MERGING. aggregate is called if key exists in both maps
  }

我有一些这样的结构。

  struct foo {
    int bar;
    foo operator+(const foo& other) const;
  };

我尝试合并两个我通过 usingstd::map<std::wstring, foo> one, another的using ,但得到编译错误。foo::operator+boost::lambda

  merge_maps(one, another, _1+_2); // MSCV9.0 cannot deduce template argument for lambda there

请帮帮我。我做错了什么?

4

1 回答 1

0

解决了。需要指定 lambda 返回类型。MSVC 实例化模板没有任何麻烦。

merge_maps(one, another, ret<foo>(_1+_2));
于 2012-09-24T19:00:03.213 回答