wrw*_*rwt 6 c++ lambda templates language-lawyer c++14
现在的问题Lambda表达式作为类模板参数询问有关使用lambda表达式作为类模板参数的可能性.
这个问题的答案是否定的.但是,它是关于C++ 11的.
新标准C++ 14的情况有变吗?
不,C++14 中的情况根本没有改变,事实上5.1.2 Lambda 表达式第2段中的语言已经从以下内容收紧:
\n\n\nlambda 表达式不得出现在未计算的操作数中(第 5 条)。
\n
到:
\n\n\n\n\n[...]lambda 表达式不得出现在未计算的操作数\n(第 5 条)、模板参数、别名声明、\n typedef 声明或函数或函数的声明中\n n 模板位于其函数体和默认参数之外。[ 注意:\n 目的是防止 lambda 出现在签名中。\xe2\x80\x94end\n 注意][...]
\n
缺陷报告 1607。模板参数中的 Lambda导致了此更改。
\n\n缺陷报告只是间接地讨论了不允许这样做的理由,但我们可以在Rationale for lambda-expressions not allowed in unevaluated contexts中找到为什么不允许这样做的非常详细的解释。原因归结为:
\n\nSFINAE考虑到这一限制的理由,它似乎不太可能改变。
\n| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |