我正在尝试初始化一个 类中的lambda表达式。 伪代码可能像这样
class A{
//stuff..
static constexpr auto lambda = [] (unsigned char element){//stuff..};
};
当我尝试编译时,出现此错误消息
error: ‘constexpr const A::<lambda(unsigned char)> A::get_range’, declared using local type ‘const A::<lambda(unsigned char)>’, is used but never defined [-fpermissive]
static constexpr auto lambda = [](unsigned char element){
如何在类初始化中执行此操作? 的确的谢谢,对不起英语。
答案 0 :(得分:0)
从C ++ 17开始,lambda可以为constexpr
,(P0170R1),但尚不支持所有编译器,因此取决于您的编译器,它可能会或可能不会工作(g ++自版本7开始支持此功能,intel编译器将从19.0开始提供该功能。
作为一种解决方法,您可以使用decltype
来实现static const
lambda成员
auto lambda = [](unsigned char element){};
class A{
//stuff
static const decltype(lambda) a;
};
const decltype(lambda) A::a{lambda};