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

时间:2013-10-06 21:42:51

标签: c++ templates lambda c++14 generic-lambda

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:1)

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