我知道generic lambdas,我知道变量模板,但是,这是干什么的?它甚至被允许吗?C++ 14结合通用lambdas和变量模板
template<typename T>
auto f = [](auto a, T b){ /**/ };
如果允许,是否可以按预期使用?那就是f<type>(var_a, var_b)
?
我知道generic lambdas,我知道变量模板,但是,这是干什么的?它甚至被允许吗?C++ 14结合通用lambdas和变量模板
template<typename T>
auto f = [](auto a, T b){ /**/ };
如果允许,是否可以按预期使用?那就是f<type>(var_a, var_b)
?
变量模板必须声明为constexpr
。在常量表达式中不会出现拉姆达,因此不允许进行初始化,并且其operator()
为而不是,因此声明为constexpr
,因此不允许调用它。
总之,这在目前的C++ 14草案中是不合格的。
注:奇怪的是,即使拉姆达表达不能在常数表达式发生,似乎拉姆达的闭合类型可以有一个constexpr
复制/移动的构造。
此代码现在是在C++ 14目前的草案法律和
你在某个地方找到这段代码,或者你只是做东西了它编译罚款铿锵3.5主干? – sehe
http://stackoverflow.com/questions/17233547/how-does-generic-lambda-work-in-c14 – Brandon
这不是这个问题的重复。 –