大型路线上`std :: pmr :: memory_resource :: allocate()`的行为

时间:2016-11-02 17:58:23

标签: c++ language-lawyer c++17

引用N4606:

  

virtual void* do_allocate(size_t bytes, size_t alignment) = 0;

     

要求:对齐应为2的幂。

     

返回:派生类应实现此函数以返回指向已分配存储(3.7.4.2)的指针,其大小至少为字节。如果支持这种对齐,则返回的存储与指定的对齐对齐;否则它与 max_align 对齐。

     

抛出:派生类实现如果无法分配具有请求大小和对齐的内存,则应抛出适当的异常。

这是恕我直言不清楚:如果对齐是两个但不支持的功率会发生什么(例如大于 max_align )?返回的存储空间是否与 max_align 对齐或是抛出的异常? 当然有关于派生类实现的注释,但由于std::pmr::memory_resource是一个虚拟基类,所以每个实现都必须是这样。

0 个答案:

没有答案