gpt4 book ai didi

c++ - 是否可以使用统一的取消引用语法?

转载 作者:搜寻专家 更新时间:2023-10-31 02:10:16 25 4
gpt4 key购买 nike

假设我有一个带有函数 f() 的类型:

struct A { void f() {} };

和两个 vector :

std::vector<A*>       x;
std::vector<A*******> y;

(愚蠢的指针数量只是为了戏剧效果。)

我正在寻找一种能够写作的方法:

deep_deref(std::begin(x)).f();
deep_deref(std::begin(y)).f();

换句话说,我想要的是一个统一的解引用语法,它由一个通用的、多层次的、智能的解引用函数(或其他允许统一的解引用语法的东西)驱动deep_deref () 将解引用传递给它的对象,然后是从该解引用中获得的对象,然后是下一个,依此类推,直到到达不可解引用的对象,此时它将返回最终对象。

请注意,沿着这条解引用路径可能存在各种可解引用的对象:指针、迭代器、智能指针等——任何可解引用的对象。

这样的事情可能吗? (假设我有 is_dereferencable。)

最佳答案

使用 std::decay 通过取消引用和删除 CV 限定符来创建 can_dereference 函数,这是可以做到的。

答案链接到 here是一个完整的实现以及一个实时示例。

我最初将此作为评论发布,但认为答案会更好地帮助人们搜索

关于c++ - 是否可以使用统一的取消引用语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45573107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com