summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2003-03-20 03:03:11 +0000
committerweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2003-03-20 03:03:11 +0000
commit3c0752b2063319fb917fcaf2144671c2f1032242 (patch)
tree744cb6ac7658d9d39796ecd23729fae9d6dba50c
parentd23a489940499bd6c634a1cb0a9875f094f8a850 (diff)
downloadcryptopp-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.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/factory.h b/factory.h
index 42670b7..893a731 100644
--- a/factory.h
+++ b/factory.h
@@ -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)
{