当我用以下签名编写lambda定义时:
auto lambda = [&] (auto i){
};
Run Code Online (Sandbox Code Playgroud)
我得到以下编译器错误:
error: 'auto' not allowed in lambda parameter
Run Code Online (Sandbox Code Playgroud)
当我从更改类型auto来int,错误消失.
我不知道为什么编译器可以推导出lambda的类型,而不是它的参数类型,在调用lambda时应该知道它?
我试图理解这种限制背后的原因.
我不知道为什么编译器可以推导出lambda的类型,而不是它的参数类型,在调用lambda时应该知道它?
它可以,但仅限于C++ 14.
auto lambda = [&] (auto i) { };
Run Code Online (Sandbox Code Playgroud)
这段代码完全合法,因为C++ 14并称为泛型lambda.
遗憾的是,在C++ 14之前,通用lambda不可用,因此,如果需要使用它们,则需要C++ 14支持.
| 归档时间: |
|
| 查看次数: |
1874 次 |
| 最近记录: |