将带有自动参数的lambda传递给另一个函数是否合法

时间:2019-07-12 15:52:40

标签: c++ c++14

将带有auto参数的lambda函数传递给另一个函数是否合法?我的意思是从c ++的角度来看是否合法,即c ++ 17。

我尝试使用LLVM 10.0.1版的clang进行编译,但是可以理解,但我理解在将lambda函数传递给“ sees”函数后,必须以某种方式推导出auto参数

#include <iostream>

template <typename Fn>
void apply(Fn&& fn) {
    fn(std::string("string"));
    fn(10);
    fn(10.3);
}


int main(int argc, char const *argv[])
{
    apply([](auto&& arg){
        std::cout << arg << std::endl;
    });
    return 0;
}

输出为:

string
10
10.3

1 个答案:

答案 0 :(得分:4)

通用lambda生成具有operator()模板但本身不是模板的类的实例。因此,可以毫无问题地推断出该类类型。

相关问题