template <class T>
struct Foo
{

    template <class U>
    struct Bar
    {
    	Bar();
    	
        template <class X, class Y>
        void foo(typename Foo<X>::template Bar<Y> b)
        {

        }
    };

};

int main()
{
	//Foo<int>::Bar<int> b = Foo<char>::Bar<char>();
	Foo<int>::Bar<int> i;
	i.foo(Foo<char>::Bar<char>());
}