([] () -> decltype(std::cout << "Hello") {
return std::cout << "Hello";
}()) << ", world!";
印刷しHello, world!
ます。
ここで何が起こっているのか分かりません。誰かが私に簡単な言葉で説明できますか?
([] () -> decltype(std::cout << "Hello")
これにより、式が持つのと同じ戻り値の型を持つラムダ (インプレース関数) が作成されstd::cout << "Hello"
ますstd::ostream&
。は[]
ラムダを開始し、()
は空のパラメーター リストであり->
、戻り値の型の前decltype(X)
にあり、式 X の型と同等です。次に、関数本体:
{
return std::cout << "Hello";
}
次に、「Hello」を出力してストリームを返す関数が呼び出されます....
())
そして最後に、返されたストリームに、もう少しテキストが送信されます...
<< ", world!";