我想知道静态成员函数返回指针
std::pointer_traits<Ptr>::pointer_to(element_type& o);
在分配对象时,应该等于分配器返回的指针。问题在下面的代码中说明。主函数在一般情况下是返回1还是0?
int main()
{
using AT = std::allocator_traits<Allocator>;
using Ptr = AT::pointer;
using PT = std::pointer_traits<Ptr>;
Allocator alloc;
auto p1 = AT::allocate(alloc, 1);
AT::construct(alloc, p1, 20);
auto p2 = PT::pointer_to(*p1);
if (p1 != p2)
return 1;
// Destruct and deallocate p1 here.
return 0;
}
我的观点是,我不明白静态函数如何只有对象的引用才能初始化花式指针的所有内部状态。另一方面,指向同一对象的指针比较不相等会很奇怪。
当实现一个指向分配器的奇特指针时,我遇到了这个问题,并且它的指针无法从静态函数中正确初始化。它需要内部分配器信息(类似于需要指向容器内部指针表的指针的std::deque
迭代器)。