diff options
author | weidai <weidai11@users.noreply.github.com> | 2003-03-20 03:03:11 +0000 |
---|---|---|
committer | weidai <weidai11@users.noreply.github.com> | 2003-03-20 03:03:11 +0000 |
commit | e01497632b78697165623a67b16c95b8d0f6c8a7 (patch) | |
tree | 744cb6ac7658d9d39796ecd23729fae9d6dba50c /factory.h | |
parent | 538de80a91da74598ba2449fbbec6de37376a4ce (diff) | |
download | cryptopp-git-e01497632b78697165623a67b16c95b8d0f6c8a7.tar.gz |
fix inlining problem
Diffstat (limited to 'factory.h')
-rw-r--r-- | factory.h | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -54,17 +54,21 @@ public: return factory ? factory->CreateObject() : NULL; } - static ObjectFactoryRegistry<AbstractClass> & Registry() - { - static ObjectFactoryRegistry<AbstractClass> s_registry; - return s_registry; - } + // VC60 workaround: use "..." to prevent this function from being inlined + static ObjectFactoryRegistry<AbstractClass> & Registry(...); private: typedef std::map<std::string, ObjectFactory<AbstractClass> *> Map; Map m_map; }; +template <class AbstractClass> +ObjectFactoryRegistry<AbstractClass> & ObjectFactoryRegistry<AbstractClass>::Registry(...) +{ + static ObjectFactoryRegistry<AbstractClass> s_registry; + return s_registry; +} + template <class AbstractClass, class ConcreteClass> void RegisterDefaultFactoryFor(const char *name, AbstractClass *Dummy1=NULL, ConcreteClass *Dummy2=NULL) { |