template<class T>
struct A
{
public:
template<class U>
struct B
{
public:
void f()
{ }
void g();
};
};
template<class T>
template<class U>
void A<T>::B<U>::g()
{ }
int main(int argc, char *argv[])
{
A<int>::B<char> a;
a.f();
a.g();
return 0;
}