如here所示,
allocate(0)
的行为未指定。
那么,如果我按照 C++23 标准调用
allocate_at_least(0)
会发生什么呢?行为是实现定义的,还是会被视为 allocate(a_non_zero_value)
?
[allocator.requirements.general]
指定(强调我的):
返回:
,其中 ptr 是为 count T 的数组分配的内存,创建了这样一个对象,但未构造数组元素,因此 count ≥ n。 如果 n == 0,则返回值未指定。allocation_result<XX::pointer, XX::size_type>{ptr, count}
因此,就像
allocate(0)
一样,行为是未指定的。