1

この C++ コード (clang のブロック言語拡張を使用) を想像してみてください。

auto now = std::chrono::system_clock::now();

std::async(^ {
  auto time = now;
  // ...
});

の型は何になりますtimeか?decltype(now)それともdecltype(now)&?_ 後者の場合、ブロックが実行される前にコピーされていることを確認するにはどうすればよいですか?

4

1 に答える 1

5

オブジェクトがコピーされ、ブロック言語の仕様decltype(now)に従って、その型は になります。

スタック ローカル オブジェクトは、copy const コンストラクターを介して Block にコピーされます。そのようなコンストラクターが存在しない場合、Block 複合ステートメント内からそのようなオブジェクトを参照することはエラーと見なされます。

于 2012-05-20T16:06:24.953 に答える