В " зависимых типах с unordered_map " было отмечено, что
std::unordered_map<Key, Value>
имеет зависимость типа от Value
в libstdc ++ (что является неожиданным) и не имеет зависимости типа от Value
в libc ++ и MSVC.
В целом, спецификация ISO C ++ говорит о типовых зависимостях контейнеров вообще? Если да, не могли бы вы указать мне на соответствующие части?
Зависимость типа: Я не уверен, есть ли формальное определение зависимости типа в спецификации ISO C ++, но для целей этого поста, скажем, type A
имеет зависимость типа на type B
, если A не может быть скомпилирован только с предварительным объявлением 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