C ++ 14结合了通用lambdas和变量模板

问题描述 投票:1回答:2

我知道generic lambdas,我知道变量模板,但是,这有什么作用?它甚至被允许了吗?

template<typename T>
auto f = [](auto a, T b){ /**/ };

如果允许,可以按预期使用吗?那就是f<type>(var_a, var_b)

c++ templates lambda c++14 generic-lambda
2个回答
6
投票

必须将变量模板声明为constexpr。 lambda不能出现在常量表达式中,因此不允许初始化,并且其operator()未声明为constexpr,因此不允许调用它。

总之,这在当前的C ++ 14草案中是不正确的。

注意:奇怪的是,即使lambda表达式不能出现在常量表达式中,似乎lambda的闭包类型可能有一个constexpr复制/移动构造函数。


1
投票

这个代码现在在C ++ 14的当前草案中是合法的,并且它与clang 3.5 trunk编译良好

© www.soinside.com 2019 - 2024. All rights reserved.