template <template <class T> class A>
int f (A<int> x) { return 0; }

template <class T>
void p (T (*x)) { ; }

class A {
public:
    int g () { ; }
    template <int n>
    int f () { return n; }
};

template <class T>
class B {
public:
    int h () { return 0; }
};


template <int n = 0>
int id () { return n; }

int main () {
    return id <1> ();
}

