Templated issues...

Started by
1 comment, last by nife 17 years, 7 months ago
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...
Killers don't end up in jailThey end up on a high-score!
Advertisement
I'm pretty sure that using typename is the correct solution.

Have you tried:

typedef std::map<Hash, typename Ptr<T>::Shared> AssetMap;
LOL, I know what I did wrong when I looked at your answer.
I placed the typename right before the T instead of in front of the class.

But anyways, thank you very much, it made the whole thing possible :D
Killers don't end up in jailThey end up on a high-score!

This topic is closed to new replies.

Advertisement