Here is the guts of my problem...
I dont seem to be able to use the template template parameters TT1, TT2 & TT3 to specialize my member function Container:: object(). Basically I want to use them in order to select the
correct member variable index1_, index2_ and index3_ as this presents a nice Tag-style interface.
Any Ideas?
Code:template<class T> struct X{ /* omitted*/ }; template<class T> struct Y{ /* omitted*/ }; template<class T> struct Z{ /* omitted*/ }; template < class T, template <typename> class TT1, template <typename> class TT2, template <typename> class TT3> struct Container { template <template <typename> class FTT> FTT<T> object(); /* All functions fail to compile. Error is // error C3207: 'MyClass<T,TT1,TT2,TT3>:: object' : // invalid template argument for 'FTT', class template expected template <> TT1<T> object<TT1>() { return object1_;} template <> TT2<T> object<TT12>() { return object2_;} template <> TT3<T> object<TT13() { return object3_;} //*/ //* Compiles but needs to use template template parameters for generality template <> X<T> object<X>() { return object1_;} template <> Y<T> object<Y>() { return object2_;} template <> Z<T> object<Z>() { return object3_;} //*/ private: TT1<T> object1_; TT2<T> object2_; TT3<T> object3_; }; int _tmain(int argc, _TCHAR* argv[]) { Container<int, X, Y, Z> container; X<int> result1 = container.object<X>(); Y<int> result2 = container.object<Y>(); Z<int> result3 = container.object<Z>(); return 0; }



LinkBack URL
About LinkBacks



)...
CornedBee