华丽指针长什么样子?

17

C++参考手册提到了一个名为fancy pointers的概念。我是从最近一个被严重踩和删除的问题中了解到它们的存在。

定义相当模糊:

当成员类型指针不是原始指针类型时,通常称之为“fancy pointer”。

他们的使用案例示例是:

一个fancy pointer的例子是映射地址无关指针boost::interprocess::offset_ptr,它使得可以在共享内存中分配基于节点的数据结构,例如std::set,并将其映射到每个进程中的不同地址的内存映射文件中。通过类模板std::pointer_traits,可以独立于提供它们的分配器使用fancy pointers。

我不理解这个解释。创建fancy pointer的语法是什么,为什么我不能在这种情况下使用普通指针?


3
我的理解是任何行为类似指针但并非指针的东西。比如几乎所有迭代器都是自定义类类型,但它们的行为与指针相似(有时存在限制,不能执行指针支持的所有操作)。类似指针的抽象称为“高级指针”。 - NathanOliver
@StoryTeller 我正在改进相关问题,但我的问题是我不确定如何解释这个术语。 - Beginner
干得好 :-) - StoryTeller - Unslander Monica
@crashmstr 是的,我明白了,我从来没有想过cpp-reference会包含无意义的编辑。 - Beginner
@NathanOliver,我认为你的答案是正确的,而且它也符合那篇博客文章中的定义。 - Beginner
显示剩余12条评论
1个回答

18
一个“fancy pointer”指的是像指针一样运作但并不是指针的东西。以迭代器为例,几乎所有的迭代器都是自定义类类型,但它们的行为就像一个指针(有时存在限制,不能执行所有支持指针的操作,因为它们不提供随机访问,但这也是其独特之处)。
换句话说,一个表现得像指针的抽象实体被称为“fancy pointer”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接