4
([] () -> decltype(std::cout << "Hello") {
    return std::cout << "Hello";
}()) << ", world!";

打印Hello, world!

我根本不明白这里发生了什么。有人可以简单地向我解释一下吗?

4

1 回答 1

6
([] () -> decltype(std::cout << "Hello")

这将创建一个与表达式具有相同返回类型的 lambda(就地函数)std::cout << "Hello"——即std::ostream&. []开始 lambda,是()一个空参数列表,->在返回类型之前,decltype(X)相当于表达式 X 的类型。然后函数体:

{
    return std::cout << "Hello";
}

然后调用函数......输出“Hello”并返回流......

 ())

最后,对于返回的流,发送了更多的文本......

 << ", world!";
于 2013-05-21T01:06:57.190 回答