0

我正在阅读 folly::Optional 中的代码以进行复制分配,但我不清楚调用 to 究竟是如何construct()将值分配给可选的。具体来说,construct()这个表达式是如何工作的?

new (const_cast<void*>(ptr)) Value(std::forward<Args>(args)...);
4

1 回答 1

3

要解构您编写的行:

std::forward<Args>(args)...正在执行variadic-template 完美转发。从本质上讲,这意味着对于任意数量的参数,将转发任何​​ r 值,依此类推。

Value(std::forward<Args>(args)...)正在调用Value这些参数的构造函数。

new (const_cast<void*>(ptr))...正在调用放置新

所以这条线的意思是,在这个特定的内存位置创建一个对象,通过转发你得到的所有参数在那里构造对象。

于 2020-11-09T13:25:37.307 回答