gpt4 book ai didi

c++ - 为什么 lambda 参数中不允许使用 auto?

转载 作者:太空狗 更新时间:2023-10-29 19:56:27 25 4
gpt4 key购买 nike

当我使用以下签名编写 lambda 定义时:

auto lambda = [&] (auto i){


};

我收到以下编译器错误:

error: 'auto' not allowed in lambda parameter

当我将类型从 auto 更改为 int 时,错误消失了。

我不确定为什么编译器可以推断出 lambda 的类型,而不是它的参数类型,它应该在调用 lambda 时知道?

我正在尝试了解此限制背后的原因。

最佳答案

I am not sure why the compiler can deduce the type of a lambda, but not its parameter type, which should be known to it at the time of the invocation of the lambda?

它可以,但只能从 C++14 开始。

auto lambda = [&] (auto i) { };

此代码自 C++14 起完全合法,并称为 generic lambda

不幸的是,通用 lambdasC++14 之前不可用,因此,如果您需要使用它们,C++14需要支持。

关于c++ - 为什么 lambda 参数中不允许使用 auto?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48653124/

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