[英]Where is the fold expression ()?
下面的代码解释说这个结构继承自几个 lambda,可以从这些 lambda 构造,并折叠using
表达式。
template<typename... Lambdas>
struct overloaded : public Lambdas...
{
explicit overloaded(Lambdas... lambdas) : Lambdas(lambdas)... {}
using Lambdas::operator()...;
};
我怀疑括号 ie () 表示 c++17 折叠表达式,但我没有看到 using 语句周围有任何括号。 它会如何折叠?
这不是折叠表达式。 您不能在 class scope 中包含任何表达式语句。正如您所指出的,折叠表达式语法中没有括号。
这是带有参数包扩展的声明。 包扩展可以在更多上下文中使用,而不仅仅是折叠表达式。
这个声明会做什么?
它会声明
using L::operator();
对于参数包Lambdas
中的每个类型L
通常使用与 typedef 相同的用法
这不是该关键字的唯一用例。 在此上下文中,它用于将基类 class 的成员(函数)引入到派生的 class 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.