为什么``polymorphic_allocator`取一个emore _ resource`指针''而不是参考



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。据指出,一种常见的做法是在无合同指针中使用参考而不是指示。但是,有一种更具吸引力的做法,即避免通过参考来处理对象并存储其地址的构造函数。我们还希望避免通过非企业参考,因为通常也被视为不良习惯(除了超载操作员除外(。

最新更新