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