【发布时间】:2019-06-20 19:43:21
【问题描述】:
在“Codependent types with unordered_map”中观察到
std::unordered_map<Key, Value> 在 libstdc++ 中对 Value 有类型依赖(这是意料之外的),在 libc++ 和 MSVC 中对 Value 没有类型依赖。
一般来说,ISO C++ 规范是否完全讨论了容器的类型依赖关系?如果可以,您能否指出相关部分?
类型依赖:我不确定 ISO C++ 规范中是否有类型依赖的正式定义,但为了这篇文章的目的,让我们说 type A 有类型如果不能单独使用 B 的前向声明编译 A,则依赖于 type B。示例:
struct Val; // forward declaration of Val
struct Container {
Val v;
}; // Compile error; Type Val is incomplete. Container has a type dependency on Val
struct Val; // forward declaration of Val
struct Container2 {
Val *v;
}; // Compiles. Container2 does not have type dependency on Val
【问题讨论】:
-
类型依赖是C++中一个具有特殊含义的术语。考虑改写。
-
@L.F.感谢您指出这一点。网络搜索并没有引导我找到标准的相关部分。如果你能指出我将不胜感激(类型依赖的定义)
-
该术语在[temp.dep]中定义。
-
@L.F.听起来不错,我只是想不出更好的选择。如果您有任何建议,我会很高兴听到。
标签: c++ language-lawyer c++-standard-library