为什么lambda参数中不允许auto?

问题描述 投票:3回答:1

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

auto lambda = [&] (auto i){


};

我得到以下编译器错误:

error: 'auto' not allowed in lambda parameter

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

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

我试图理解这种限制背后的原因。

c++ lambda auto
1个回答
9
投票

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

它可以,但仅限于C ++ 14

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

这段代码完全合法,因为C ++ 14并称为泛型lambda

遗憾的是,在C ++ 14之前, 通用lambda不可用,因此,如果需要使用它们,则需要C ++ 14支持。

© www.soinside.com 2019 - 2024. All rights reserved.