【问题标题】:C++14 combining generic lambdas and variable templatesC++14 结合通用 lambda 和变量模板
【发布时间】:2013-10-06 21:42:50
【问题描述】:

我知道generic lambdas,我也知道变量模板,但是,这是做什么的?甚至允许吗?

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

如果允许,是否可以按预期使用?也就是f&lt;type&gt;(var_a, var_b)?

【问题讨论】:

  • 你是不是在某个地方找到了这段代码,或者你只是在编造一些东西?
  • 这不是那个问题的重复。
  • @LB-- 没人说是
  • 为什么这被否决了?

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


【解决方案1】:

变量模板必须声明为constexpr。 lambda 不能出现在 constant-expression 中,因此不允许初始化,并且它的 operator() not 声明为 constexpr,因此不允许调用它.

总而言之,这在当前的 C++14 草案中是错误的。

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

【讨论】:

    【解决方案2】:

    这段代码现在在 C++14 的当前草案中是合法的,它可以在 clang 3.5 主干上正常编译

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-14
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      相关资源
      最近更新 更多