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