Index: include/llvm/Support/type_traits.h =================================================================== --- include/llvm/Support/type_traits.h +++ include/llvm/Support/type_traits.h @@ -15,6 +15,8 @@ #define LLVM_SUPPORT_TYPE_TRAITS_H #include "llvm/Support/Compiler.h" +#include +#include #include #include @@ -48,11 +50,22 @@ #endif }; -// std::pair's are pod-like if their elements are. +// These containers are POD-like if their elements are. template struct isPodLike> { static const bool value = isPodLike::value && isPodLike::value; }; +template <> struct isPodLike> { static const bool value = true; }; +template struct isPodLike> { + static const bool value = isPodLike::value; +}; +template struct isPodLike> { + static const bool value = + isPodLike::value && isPodLike>::value; +}; +template struct isPodLike> { + static const bool value = isPodLike::value; +}; /// Metafunction that determines whether the given type is either an /// integral type or an enumeration type, including enum classes.