summaryrefslogtreecommitdiff
path: root/factory.h
diff options
context:
space:
mode:
authorweidai <weidai11@users.noreply.github.com>2003-03-20 03:03:11 +0000
committerweidai <weidai11@users.noreply.github.com>2003-03-20 03:03:11 +0000
commite01497632b78697165623a67b16c95b8d0f6c8a7 (patch)
tree744cb6ac7658d9d39796ecd23729fae9d6dba50c /factory.h
parent538de80a91da74598ba2449fbbec6de37376a4ce (diff)
downloadcryptopp-git-e01497632b78697165623a67b16c95b8d0f6c8a7.tar.gz
fix inlining problem
Diffstat (limited to 'factory.h')
-rw-r--r--factory.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/factory.h b/factory.h
index 42670b7d..893a731f 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)
{