在地图

时间:2016-11-11 23:26:13

标签: c++ c++11 lambda

我有一张地图,它使用对象的日期字段来确定地图顺序。为此,我使用lambda表达式来处理比较。这工作正常,但我收到一条警告说warning: ‘Foo’ has a field ‘Foo::m_date_map’ whose type uses the anonymous namespace这个问题似乎在于我为这个类型添加了别名。我在一个答案中看到修复是命名匿名类型,但我不知道该怎么做。

//In Foo.h

static constexpr auto compare_by_date = [](const date_key* lhs, const date_key* rhs) {
    return std::tie(lhs->year, lhs->month, lhs->day) < std::tie(rhs->year, rhs->month, rhs->day);
};

class Foo {
  using ValueMap = std::map<double, date_key* const>;
  using DateMap = std::map<date_key* const, ValueMap *, decltype(compare_by_date)>;

  DateMap * m_date_map;

  Foo();

}

//In Foo.cpp
Foo::Foo() : m_date_map(new DateMap(compare_by_date) {
    // Do something
}

我应该如何摆脱警告?

1 个答案:

答案 0 :(得分:1)

我认为将lambda转换为Array <int> d = a * c; 会有效。

std::function