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)根据块语言规范,对象被复制,其类型为。

堆栈本地对象通过复制 const 构造函数复制到 Block 中。如果不存在这样的构造函数,则认为从 Block 复合语句中引用此类对象是错误的。

于 2012-05-20T16:06:24.953 回答