gpt4 book ai didi

c++ - 描述原始指针(指向对象)的概念的正确实现是什么?

转载 作者:行者123 更新时间:2023-12-03 07:00:24 29 4
gpt4 key购买 nike

这可能只是学术兴趣。
因为我注意到我的实际例子可能不适合提出这个问题。
最初我写过类似的东西

auto bak_ptr{ptr}; // think of an `int* ptr`
备份地址。
现在我想知道是否可以通过替换那个愚蠢的 auto 来做得更好通过一个更有意义、更广阔的 C++20 概念。
经过一番思考,该特定示例中的正确选择可能只是
std::copyable auto bak_ptr{ptr};
因为这反射(reflect)了备份的意图,某物的拷贝。
但剩下的学术问题是:正确映射原始指针概念行为的正确(概念标准库)实现是什么?如有必要,让我们将“指针”限制为指向对象的指针以供了解。还有指向 void、函数、成员的指针——也许会使问题复杂化。
我想到了与迭代器的关系。希望不会再次正确回答我自己的问题:会 std::contiguous_iterator在案件中是一个有值(value)的选择?
有人可以分享关于该主题的或多或少完整的专家观点吗?
为什么可能还没有该概念的 std::pointer_to_object 标准库实现(对着你的脸大喊大叫)?

最佳答案

只是建立在 std::is_pointer应该没有什么问题

template <class T>
concept pointer =
std::is_pointer_v<T>;
感谢 @cigien为了那个想法。
我会说,在简单的备份示例中,选择 std::copyable相反是完全正确的。由于这就是您要对备份执行的操作,因此请通过拷贝再次还原。

关于c++ - 描述原始指针(指向对象)的概念的正确实现是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64593165/

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