折叠表达式 () 在哪里?
Where is the fold expression ()?
下面的代码解释说这个结构继承自几个lambdas,可以从这些lambdas构造,并折叠在using
表达式上。
template<typename... Lambdas>
struct overloaded : public Lambdas...
{
explicit overloaded(Lambdas... lambdas) : Lambdas(lambdas)... {}
using Lambdas::operator()...;
};
我怀疑括号即 () 表示 c++17 折叠表达式,但我没有看到 using 语句周围有任何括起来的括号。它会如何折叠?
这不是折叠表达式。 class 范围内不能有任何表达式语句。正如您所指出的,折叠表达式语法中没有括号。
这是一个带有参数包扩展的声明。包扩展可以在更多的上下文中使用,而不仅仅是折叠表达式。
what will this statement do?
它将声明
using L::operator();
对于参数包中的每个类型 L
Lambdas
。
Usually using is used same as typedef
这不是该关键字的唯一用例。在此上下文中,它用于将基 class 的成员(函数)引入派生的 class.
下面的代码解释说这个结构继承自几个lambdas,可以从这些lambdas构造,并折叠在using
表达式上。
template<typename... Lambdas>
struct overloaded : public Lambdas...
{
explicit overloaded(Lambdas... lambdas) : Lambdas(lambdas)... {}
using Lambdas::operator()...;
};
我怀疑括号即 () 表示 c++17 折叠表达式,但我没有看到 using 语句周围有任何括起来的括号。它会如何折叠?
这不是折叠表达式。 class 范围内不能有任何表达式语句。正如您所指出的,折叠表达式语法中没有括号。
这是一个带有参数包扩展的声明。包扩展可以在更多的上下文中使用,而不仅仅是折叠表达式。
what will this statement do?
它将声明
using L::operator();
对于参数包中的每个类型 L
Lambdas
。
Usually using is used same as typedef
这不是该关键字的唯一用例。在此上下文中,它用于将基 class 的成员(函数)引入派生的 class.