繁体   English   中英

折叠表达式 () 在哪里?

[英]Where is the fold expression ()?

参考fluentCPP文章

下面的代码解释说这个结构继承自几个 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM