]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/typeregistry.h
Add move semantics to Variant
[libs/core.git] / source / core / typeregistry.h
index 27610859c75105d4b774e2d4a8e44493cb415d67..193fe07fa9810d1426a4a430e53e26d9eeb802c4 100644 (file)
@@ -40,12 +40,10 @@ private:
 
                RegisteredType(const std::string &kw): TypeBase(kw) { }
 
-               virtual void invoke(T arg) const { action(this->keyword, arg); }
+               void invoke(T arg) const override { action(this->keyword, arg); }
        };
 
-       typedef std::map<std::string, TypeBase *> TypeMap;
-
-       TypeMap types;
+       std::map<std::string, TypeBase *> types;
 
 public:
        ~TypeRegistry();
@@ -65,8 +63,8 @@ public:
 template<template<typename> class A, typename T>
 TypeRegistry<A, T>::~TypeRegistry()
 {
-       for(typename TypeMap::iterator i=types.begin(); i!=types.end(); ++i)
-               delete i->second;
+       for(auto &kvp: types)
+               delete kvp.second;
 }
 
 template<template<typename> class A, typename T>
@@ -88,8 +86,8 @@ void TypeRegistry<A, T>::invoke(const std::string &kw, T arg) const
 template<template<typename> class A, typename T>
 void TypeRegistry<A, T>::invoke_all(T arg) const
 {
-       for(typename TypeMap::const_iterator i=types.begin(); i!=types.end(); ++i)
-               i->second->invoke(arg);
+       for(auto &kvp: types)
+               kvp.second->invoke(arg);
 }
 
 } // namespace Msp