gpt4 book ai didi

具有可变参数列表的 c++11 lambda 函数

转载 作者:太空狗 更新时间:2023-10-29 20:39:03 24 4
gpt4 key购买 nike

我没有在SO中找到这个问题。如果重复,请引用答案并关闭此问题。

C++11 lambda 函数可以有可变参数列表吗?

auto displayMessage = [objectLog] (const char * sFormat, ...) {
...
}

最佳答案

是的,语法允许,没有什么禁止。

lambda 声明符 在 5.1.2 [expr.prim.lambda] 中定义为:

lambda-declarator:
    ( parameter-declaration-clause ) mutableopt exception-specificationopt attribute-specifier-seqopt trailing-return-typeopt

parameter-declaration-clause 在 8.3.5 [dcl.fct] 中定义为:

parameter-declaration-clause:
    parameter-declaration-listopt ...opt
    parameter-declaration-list , ...

此外,G++、Clang 和 EDG 都可以毫无问题地接受它。

在幕后,C++11 lambda 生成带有 operator() 成员函数的闭包类型,并且函数没有理由不能有 ...,例如这个 lambda 表达式:

auto l = [](int, ...) { }

生成这样的类型:

struct unnamed_closure_type {
void operator()(int, ...) const { }
};

这是完全有效的 C++。

关于具有可变参数列表的 c++11 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29123519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com