1*89a1d03eSRichard class MyClass { 2*89a1d03eSRichard public: 3*89a1d03eSRichard template <template <typename> class S, typename T> func1(T * a)4*89a1d03eSRichard S<T> *func1(T *a) { 5*89a1d03eSRichard return new S<T>(); 6*89a1d03eSRichard } 7*89a1d03eSRichard template <typename T, T (*S)()> func2(T a)8*89a1d03eSRichard void func2(T a) { 9*89a1d03eSRichard S(); 10*89a1d03eSRichard } 11*89a1d03eSRichard }; 12