C++ std::分配器接口的修订版是否计划用于未来的C++;版本?
在Andrei中,Alexandrescu概述了std::allocator接口的一些暴行,并简要强调了它实际上与分配无关,并提出了对这些分配器的另一种思考方式,这将使它们更具可用性和模块化。或者,引用描述: 分配器有一个不光彩的过去,阴暗的现在和不愉快的未来。STL引入了分配器,作为20世纪90年代过时的分段内存模型的权宜之计。他们的设计是有限的,在很多方面甚至没有帮助分配那么多。因为分配者在那里,他们只是继续在那里,直到他们无法根除或工作,尽管社区付出了巨大的努力 本讲座讨论了根据第一原理创建的内存分配器的完整设计。它是通用的、组件化的、可组合的,用于支持特定于应用程序的分配模式 他反对当前std::分配器的主要观点包含在视频的第二部分中,但总结如下:C++ std::分配器接口的修订版是否计划用于未来的C++;版本?,c++,c++20,allocator,c++-concepts,c++23,C++,C++20,Allocator,C++ Concepts,C++23,在Andrei中,Alexandrescu概述了std::allocator接口的一些暴行,并简要强调了它实际上与分配无关,并提出了对这些分配器的另一种思考方式,这将使它们更具可用性和模块化。或者,引用描述: 分配器有一个不光彩的过去,阴暗的现在和不愉快的未来。STL引入了分配器,作为20世纪90年代过时的分段内存模型的权宜之计。他们的设计是有限的,在很多方面甚至没有帮助分配那么多。因为分配者在那里,他们只是继续在那里,直到他们无法根除或工作,尽管社区付出了巨大的努力 本讲座讨论了根据第一原理创
Blk
(ptr,大小)Rebind::other
很糟糕(他没有进一步详细说明)但似乎什么也没有从中得到?当时我不在,但似乎STL2正在进行中,但后来已经停止了。是否已确定概念至少足以调解std::allocator的症状(如果是,在何处/何时?),或者这是一个向后兼容性问题?在未来的C++版本的路线图上有一些与此相关的吗? < P>没有关于重新分配分配器模型的建议。这基本上有两个原因
C++容器库依赖于以某种方式工作的分配器,并且使容器能够使用这两种分配器都是极端复杂的。所以,如果你想要一个新的分配器模型,你也在谈论一组新的容器,这是一个巨大的蠕虫罐头,委员会在打开时阻止了它
现在,分配器创建和使用中的大多数缺陷都是可以避免的。即使在C++17中编写分配器也不是一个挑战。你不需要了解事情的血淋淋的细节;您只需要实现几个函数和几个成员别名<代码>标准::分配器为您填充大部分空白一天结束时,在C++语言和库中有一些明显的缺陷,它比分配器模型更重要,它比严格的使用更难使用。你能详细说明它不是分配和你想要它看起来什么样子吗?它包含在STL的最初原因显然是为了解决这个问题。近/远指针:谈话的最后部分强调了std::allocator的主要问题,其余部分概述了一种新的设计。他基本上建议使用小型可组合的预定义分配器,如“Segator”、“stackallocator”、“nullallocator”、“fallbackallocator”,并使用组合为某个应用程序构建一个复杂的自定义分配器。实际上,稍晚一点会给出更好的总结。我不想看太长的演示文稿。你能总结一下当前分配器接口的问题吗?@SergeBallesta I用一个简短的总结更新了这个问题。不过我还是建议你找个时间看看,对我来说,这部电影很有见地!委员会中关于这个问题的讨论有没有记录在案?@AdriaanJacobs:从来没有关于这个问题的提案,所以委员会没有什么可以讨论的。我在解释为什么这样的事情从来没有被提出过,也很可能不会被接受。我想,因为你说委员会在打开这个巨大的蠕虫罐头时犹豫不决,这是因为你读到了一些东西。另外,您不认为Andrei建议的一个子集可以在当前的std::allocator接口下实现吗?预定义满足分配器要求的两个类,并且像Andrei建议的那样是模块化的?