gpt4 book ai didi

c++ - 我可以使用不完整类型列表的迭代器吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:02 24 4
gpt4 key购买 nike

struct some_struct
{
std::list<some_struct> nested;
};

IIUC 在过去这会调用 UB,因为标准容器只需要用完整类型实例化。

然而,现在我们已经取得了进展,并且根据 http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4510.html我们可以实例化std::list, std::forward_liststd::vector 不完整的类型,所以上面的代码是有效的。

但是,但是,我可以更进一步写:

struct some_struct
{
std::list<some_struct>::iterator it;
};

?

实例化一个容器和使用它的成员类型是不一样的...例如,我被告知我可能会实例化具有不完整类型的 boost 容器,但我可能不会使用它们的 value_type 除非模板参数是一个完整的类型。所以我不太确定上面的代码片段是否有效。

是吗?

最佳答案

那篇论文说

T shall be complete before any member of the resulting specialization of list is referenced.

关于c++ - 我可以使用不完整类型列表的迭代器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38488517/

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