相关疑难解决方法(0)

关于Hinnant的堆栈分配器的问题

我一直在使用Howard Hinnant的堆栈分配器,它就像一个魅力,但实现的一些细节对我来说有点不清楚.

  1. 为什么全球运营商newdelete使用?的allocate()deallocate()成员函数使用::operator new::operator delete分别.同样,成员函数construct()使用全局布局new.为什么不允许任何用户定义的全局或类特定的重载?
  2. 为什么对齐设置为硬编码16字节而不是std::alignment_of<T>
  3. 为什么构造函数和max_sizethrow()异常规范?这不是劝阻(参见例如更有效的C++第14项)?在分配器中发生异常时,是否真的有必要终止和中止?这是否随新的C++ 11 noexcept关键字而改变?
  4. construct()成员函数将是完美转发(在构造函数被调用)的理想选择.这是编写符合C++ 11标准的分配器的方法吗?
  5. 还需要进行哪些其他更改才能使当前代码C++ 11符合要求?

c++ memory-alignment exception-specification allocator c++11

32
推荐指数
1
解决办法
3149
查看次数