【发布时间】:2021-12-20 14:57:10
【问题描述】:
是否可以使用auto 在 C++ 类中声明 lambda 函数?我收到编译错误:
错误:“const Temp::(lambda at a.cpp:8:29)”类型的静态数据成员的类内初始化程序需要“constexpr”说明符
我正在为作为类成员变量的集合定义自定义排序函数,并且我想在类中定义此排序函数。我该如何解决这个问题?
其次,即使我将 lambda 函数行移到类之外,我在声明集合的行也会收到错误:
错误:未知类型名称“cmp”
为什么以及如何解决?
class Temp {
public:
static const auto cmp = [](int p1, int p2)
{
return p1>p2;
};
set<int, decltype(cmp) > sortedSet(cmp);
Temp() {
}
}
【问题讨论】:
-
半相关:为什么要在这里使用lambda表达式?常规函数会更容易编写(也更短)
-
按照它的建议使用'constexpr'说明符怎么样?
-
@appleapple 这也不起作用。它抛出 error: unknown type name 'cmp'
-
sortedSet(cmp)也应该是sortedSet{cmp} -
@UnholySheep 那是另一个问题。现在可以了。