想象一下这个 C++ 代码(它使用 clang 的块语言扩展)。
auto now = std::chrono::system_clock::now();
std::async(^ {
auto time = now;
// ...
});
将是什么类型的time
?会是decltype(now)
还是decltype(now)&
?如果是后者,我如何确保在块运行之前复制它?
想象一下这个 C++ 代码(它使用 clang 的块语言扩展)。
auto now = std::chrono::system_clock::now();
std::async(^ {
auto time = now;
// ...
});
将是什么类型的time
?会是decltype(now)
还是decltype(now)&
?如果是后者,我如何确保在块运行之前复制它?
decltype(now)
根据块语言规范,对象被复制,其类型为。
堆栈本地对象通过复制 const 构造函数复制到 Block 中。如果不存在这样的构造函数,则认为从 Block 复合语句中引用此类对象是错误的。