template instantiation syntax

F

Faheem Mitha

Hi,

On the net, I found the following article,
http://www.gamedev.net/reference/articles/article2097.asp

describing a generic factory class.

My question is about one of the links pointed to by the article,
namely

http://downloads.gamedev.net/features/programming/objectfactory/listing4.h

The code in listing4.h includes syntax like

****************************************************************************
template<typename BaseClassType, typename Param1Type, typename UniqueIdType>
class ObjectFactory<BaseClassType (Param1Type), UniqueIdType>
{
protected:
typedef BaseClassType (*CreateObjectFunc)(Param1Type);
[...]
****************************************************************************

From the article, it looks like he is using the structure of templates
parameters after the class name to instantiate the template, eg.

ObjectFactory<Shape *(int), std::string> shape_factory;

Here Shape * == BaseClassType
int == Param1Type
std::string == UniqueIdType

I've never seen syntax like this, so I'm wondering what is going
on. Does anyone have an idea? Is this even legal C++ syntax?

Thanks in advance. Faheem.
 
F

Faheem Mitha

Hi,

On the net, I found the following article,
http://www.gamedev.net/reference/articles/article2097.asp

describing a generic factory class.

My question is about one of the links pointed to by the article,
namely

http://downloads.gamedev.net/features/programming/objectfactory/listing4.h

The code in listing4.h includes syntax like

****************************************************************************
template<typename BaseClassType, typename Param1Type, typename UniqueIdType>
class ObjectFactory<BaseClassType (Param1Type), UniqueIdType>
{
protected:
typedef BaseClassType (*CreateObjectFunc)(Param1Type);
[...]
****************************************************************************

From the article, it looks like he is using the structure of templates
parameters after the class name to instantiate the template, eg.

ObjectFactory<Shape *(int), std::string> shape_factory;

Here Shape * == BaseClassType
int == Param1Type
std::string == UniqueIdType

I missed the

template <typename CtorSignature, typename UniqueIdType> class ObjectFactory;

at the top. So this is a class-template partial specialization of
ObjectFactory, though not of a kind I have seen before.

Have I understood this correctly?

Thanks. Faheem.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,566
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top