Howard Hinnantexplainedunique_ptr
也可以使用自定义存储类型。他提到的例子是“共享内存”。unique_ptr自定义存储类型的例子?
他只给出了粗略的想法(这对于快速介绍来说很好)。但任何人都可以完成他的例子“自定义存储类型”(无论是否共享内存)?
为了支持将
unique_ptr
到共享存储器中,自定义删除器可以包含一个自定义指针类型(通常不共享存储器应用的实际指针)。一个简单的放置一个嵌套式称为指针看齐您删除器内的指针行为,公开访问:
template <class T>
class MyDeleter
{
public:
class pointer
{
public:
friend bool operator==(pointer x, pointer y);
friend bool operator!=(pointer x, pointer y);
// ...
};
void operator()(pointer p);
};
void test()
{
unique_ptr<int, MyDeleter<int> > p;
MyDeleter<int>::pointer p2 = p.get(); // A custom pointer type used for storage
}
我怀疑// ...
必须扩展,并test()
可能会做的一些额外的东西真正的“自定义存储类型”示例。
有人能告诉我在哪里,他/她
- 实际上已经使用这种定制,
- 并在这方面,
- 这是什么定制代码,(在
//...
大概) - 以及如何客户端代码使用它? (在
test()
可能)
有不太可能是这许多用途customization-因为它是一个非常新的库功能。 – Puppy 2011-06-07 23:36:04