如果一个类T有对齐要求,例如由alignas关键字指定的,是否std::optional<T>保证boost::optional<T>遵守所述对齐?
如果它们只是Tobject 和 a 的包装类bool initialized,那么它们会根据需要自动对齐其T成员,但标准和 boost 文档指出它们不能容纳任何对象并且可以很好地处理构造对象的成本。据我了解,它们不只是包含一个T. 相反,他们似乎分配了一个缓冲区,在该缓冲区上T手动构建或销毁。因此,C++ 语言不会自动对齐缓冲区,因为它不是T.
那么,std::optional<T>是否boost::optional<T>正确对齐他们的托管T对象?他们是否也提供optional<T>::operator new并optional<T>::operator new[]尊重对齐要求?