gaa*_*kam 5 c++ containers incomplete-type c++17
struct some_struct
{
std::list<some_struct> nested;
};
Run Code Online (Sandbox Code Playgroud)
IIUC过去会调用UB,因为标准容器只需要用完整类型进行实例化.
但是,现在我们已经从这里取得了进展,根据http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4510.html我们可以实例化std::list,std::forward_list并且std::vector类型不完整,所以上面的代码已验证.
但是,但是,我可以进一步写下来:
struct some_struct
{
std::list<some_struct>::iterator it;
};
Run Code Online (Sandbox Code Playgroud)
?
实例化容器并使用其成员类型是不一样的......例如,我被告知我可以实例化具有不完整类型的boost容器,但value_type除非模板参数是完整类型,否则我可能不会使用它们.所以我不确定上面的代码片段是否有效.
是吗?
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |