std::function 允许你这样做:
std::function<void()> = []()->int{return 42;};
Run Code Online (Sandbox Code Playgroud)
但不是这个:
std::function<void()> = [](int i)->int{return 42;};
Run Code Online (Sandbox Code Playgroud)
大概是因为返回类型不是函数签名的一部分.但是std::function是一个类类型,它被赋予一个返回类型,并且知道它构造的函数对象的返回类型.所以这里可能存在编译器错误.
为什么没有编译器错误?
c++ ×1