当我在C++中使用块时,是否会复制或引用对象?

1 clang objective-c++ objective-c-blocks

想象一下这个C++代码(使用clang的块语言扩展).

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

std::async(^ {
  auto time = now;
  // ...
});
Run Code Online (Sandbox Code Playgroud)

会是什么类型的time?会不会decltype(now)还是decltype(now)&?如果是后者,我怎样才能确保在块运行之前复制它?

小智 5

所述对象被复制,并且其类型是decltype(now),按照所述块语言规范.

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