diff options
author | weidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0> | 2003-03-20 03:03:11 +0000 |
---|---|---|
committer | weidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0> | 2003-03-20 03:03:11 +0000 |
commit | 3c0752b2063319fb917fcaf2144671c2f1032242 (patch) | |
tree | 744cb6ac7658d9d39796ecd23729fae9d6dba50c | |
parent | d23a489940499bd6c634a1cb0a9875f094f8a850 (diff) | |
download | cryptopp-3c0752b2063319fb917fcaf2144671c2f1032242.tar.gz |
fix inlining problem
git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@39 57ff6487-cd31-0410-9ec3-f628ee90f5f0
-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) { |