C 17标准说:
[mem.poly.allocator.ctor]
polymorphic_allocator(memory_resource* r);
要求:
r
是非null。效果:将
memory_rsrc
设置为r
。投掷:没有。
[注意:此构造器提供了
memory_resource*
的隐式转换。 - end Note ]
如果"需要" 子句提到 r
必须是非null?
memory_resource*
而不是memory_resource&
有什么意义彭博风格的指南鼓励接受将被指针而不是参考突变的参数,以便呼叫者侧的及时和变异成为突变的视觉标记。但是,标准中没有这样的先例。
r
被视为指针而不是参考的原因是什么?
见pmr
的标准化,彭博参与度重大,因为该公司使用多态分配器模型。
n3916:
请注意,内存 - 资源库的设计是为了使
ShoppingList
构造函数接受A Pointer 对memory_resource
而不是参考对memory_resource
。据指出,一种常见的做法是在无合同指针中使用参考而不是指示。但是,有一种更具吸引力的做法,即避免通过参考来处理对象并存储其地址的构造函数。我们还希望避免通过非企业参考,因为通常也被视为不良习惯(除了超载操作员除外(。