引用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
是一个虚拟基类,所以每个实现都必须是这样。