小编Luk*_* II的帖子

关于C++中auto关键字类型推导的疑惑

这是我创建的代码片段:

    auto f = [](auto a) -> auto {
        cout << a << endl;
        return a;
    };

    cout << f(12) << endl;
    cout << f("test");
Run Code Online (Sandbox Code Playgroud)

这是我所知道的:类型必须在编译时全部解析/指定。

这里的问题是,当编译器看到这个 lambda 函数 f 时,它会如何表现?它如何推导出特定用途的所有类型,如第 6 行和第 7 行,我们可以看到每次调用 lambda 函数 f 时都会传递两个不同的参数。编译器是否创建 lambda 函数 f 的不同实例来匹配传递的类型?

任何帮助将不胜感激!

另外,如果答案技术性太强,无法用几行代码写出来,我将不胜感激有关 lambda 函数及其工作原理的任何良好参考。

我注意到的一件事是,以通常的方式定义函数时不允许使用 auto:

void f(auto a)
{

}
Run Code Online (Sandbox Code Playgroud)

这不能编译。

c++ lambda types

2
推荐指数
1
解决办法
83
查看次数

标签 统计

c++ ×1

lambda ×1

types ×1