【发布时间】:2021-11-03 14:52:16
【问题描述】:
template<class T, class... Args>
constexpr T* construct_at( T* p, Args&&... args ) {
return ::new (const_cast<void*>(static_cast<const volatile void*>(p)))
T(std::forward<Args>(args)...);
}
除了construct_at 可用于常量表达式的求值。
如您所见,如果没有给出args,它将初始化对象。有没有办法实现默认初始化?调用 ::new (p) T; 的等价物(注意缺少括号)。
换句话说,是否可以使用可以在常量表达式中使用的placement new 执行默认初始化?
【问题讨论】: