【发布时间】:2013-07-25 17:08:33
【问题描述】:
C++11 提供std::allocator_traits 类作为使用分配器的标准方式。静态函数std::allocator_traits::construct() 采用指针 指向应该构造对象的位置。然而,std::allocator_traits::allocate() 静态函数返回一个 allocator::pointer 值,它只需要表现得像一个指针,但不一定是一个(通常,尽管std::allocator::pointer 必须是一个指针)。
如果分配和构造静态方法通常适用于不兼容的类型,应该如何使用它们?只有在pointer 类型实际上可以转换为普通的普通指针时才能使用它们吗?
【问题讨论】:
-
+1 目前这是一个非常有见地的问题。很少有 C++ 程序员探索这些领域。实施者必须这样做。这让我问了一个问题:你是 std::lib 的实现者吗?
-
@HowardHinnant:谢谢!这个问题与一个小型向量类的设计有关,在
std::vector上有一些额外的花里胡哨(例如,自动使用最多几个元素的静态存储,支持 SSE 和其他向量指令等)。只是想尝试在分配器支持方面以“正确”的方式做事。
标签: c++ memory-management c++11