([] () -> 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";
}
然后调用函数......输出“Hello”并返回流......
())
最后,对于返回的流,发送了更多的文本......
<< ", world!";