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

时间:2016-07-20 18:47:40

标签: c++ containers c++17 incomplete-type

NavigationExperimental

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

但是,现在我们已从此进展,根据http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4510.html,我们可以使用不完整类型实例化struct some_struct { std::list<some_struct> nested; }; std::liststd::forward_list,因此上述代码有效

但是,但是,我可以进一步写下来:

std::vector

实例化容器并使用其成员类型是不一样的...例如,我被告知我可以实例化具有不完整类型的boost容器,但我可能不会使用他们的struct some_struct { std::list<some_struct>::iterator it; }; ,除非模板参数是一个完整的类型。所以我不确定上面的代码段是否有效。

是吗?

1 个答案:

答案 0 :(得分:8)

那篇论文说

  

T应在所得专业化的任何成员之前完成   引用了list