diff options
-rw-r--r-- | Source/cmStandardIncludes.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/Source/cmStandardIncludes.h b/Source/cmStandardIncludes.h index 251a043..646300d 100644 --- a/Source/cmStandardIncludes.h +++ b/Source/cmStandardIncludes.h @@ -239,7 +239,20 @@ private: namespace ContainerAlgorithms { -template<typename Container> +template<typename T> +struct cmIsPair +{ + enum { value = false }; +}; + +template<typename K, typename V> +struct cmIsPair<std::pair<K, V> > +{ + enum { value = true }; +}; + +template<typename Container, + bool valueTypeIsPair = cmIsPair<typename Container::value_type>::value> struct DefaultDeleter { void operator()(typename Container::value_type value) { @@ -247,10 +260,10 @@ struct DefaultDeleter } }; -template<typename K, typename V> -struct DefaultDeleter<std::map<K, V> > +template<typename Container> +struct DefaultDeleter<Container, /* valueTypeIsPair = */ true> { - void operator()(typename std::map<K, V>::value_type value) { + void operator()(typename Container::value_type value) { delete value.second; } }; |