From 4dc0c488f94a5f0c7ae04fd15b46a92c20fb03fa Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 4 Jan 2015 15:16:56 +0100 Subject: cmDeleteAll: Generalize deletion specialization for map types. Assume that a container whose value_type is a std::pair should have its second member deleted. --- Source/cmStandardIncludes.h | 21 +++++++++++++++++---- 1 file 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 +template +struct cmIsPair +{ + enum { value = false }; +}; + +template +struct cmIsPair > +{ + enum { value = true }; +}; + +template::value> struct DefaultDeleter { void operator()(typename Container::value_type value) { @@ -247,10 +260,10 @@ struct DefaultDeleter } }; -template -struct DefaultDeleter > +template +struct DefaultDeleter { - void operator()(typename std::map::value_type value) { + void operator()(typename Container::value_type value) { delete value.second; } }; -- cgit v0.12