Templated issues...
Hi, I'm looking for a solution to this:
template<class T> class Ptr
{
public:
typedef boost::shared_ptr<T> Shared;
};
typedef unsigned int Hash;
template<class T> class CYNA_API AssetManager
{
public:
typedef std::map<Hash, Ptr<T>::Shared> AssetMap;
};
Because the AssetManager gives me the following errors (with GCC 3.4.4)
error: type/value mismatch at argument 2 in template parameter list for `template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map'
error: expected a type, got ` Ptr<T>::Shared'
error: template argument 4 is invalid
error: ISO C++ forbids declaration of `AssetMap' with no type
I've tried to typename the templates and a couple of other hacks/tips I found on the net, but no luck with either of them, unfortunately :(
Thanks in advance...
I'm pretty sure that using typename is the correct solution.
Have you tried:
typedef std::map<Hash, typename Ptr<T>::Shared> AssetMap;
Have you tried:
typedef std::map<Hash, typename Ptr<T>::Shared> AssetMap;
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement