gpt4 book ai didi

c++ - 在 map 中使用 lambda 作为比较器时的匿名类型警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:11:35 27 4
gpt4 key购买 nike

我有一张 map ,它使用对象的日期字段来确定 map 顺序。为此,我使用 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
}

我应该如何摆脱警告?

最佳答案

我认为将 lambda 转换为 std::function 是可行的。

static constexpr std::function<bool(const date_key*, const date_key*)> compare_by_date = ...

关于c++ - 在 map 中使用 lambda 作为比较器时的匿名类型警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40557775/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com