我是在愚蠢地阅读代码::复制分配的可选代码,而且我不清楚对construct()的调用是如何为可选对象分配值的。特别是在construct()中,这个表达式是如何工作的?
construct()
new (const_cast<void*>(ptr)) Value(std::forward<Args>(args)...);
发布于 2020-11-09 13:25:37
要解构您所写的行:
std::forward<Args>(args)...正在执行可变模板完美转发。本质上,这意味着对于任意数量的参数,无论r值是什么,都会被转发给等等。
std::forward<Args>(args)...
Value(std::forward<Args>(args)...)正在对这些参数调用Value的构造函数。
Value(std::forward<Args>(args)...)
Value
new (const_cast<void*>(ptr)) ...正在给安置新打电话。
new (const_cast<void*>(ptr))
所以这行的意思是,在这个特定的内存位置创建一个对象,通过转发您得到的所有参数来构造这个对象。
https://stackoverflow.com/questions/64752367
相似问题