([] () -> decltype(std::cout << "Hello") {
return std::cout << "Hello";
}()) << ", world!";
打印出Hello, world!
。
我完全不理解这里到底发生了什么。有没有人能用简单的语言解释一下?
([] () -> decltype(std::cout << "Hello")
这将创建一个 lambda 函数(即内部函数),其返回类型与表达式 std::cout << "Hello"
相同 - 即为 std::ostream&
。 []
开始 lambda 函数,()
是一个空参数列表,->
前缀指定了返回类型,decltype(X)
等同于表达式 X 的类型。然后是函数体:
{
return std::cout << "Hello";
}
())
<< ", world!";
[]{return std::cout << "Hello";}() << ", world!";
。 - chris