Jak wywołać funkcję członka szablonu? [duplikować]

Możliwy duplikat:
Funkcja szablonu C ++ klasy szablonowej wywoływana z funkcji szablonu

template<class T1>
class A 
{
public:
    template<class T0>
    void foo() const {}
};

template<class T0,class T1>
void bar( const A<T1>& b )
{
    b.foo<T0>();  // This throws " expected primary-expression before ‘>’ token"
}

Mogę to zmienić

b->A<T1>::template foo<T0>();

który dobrze się kompiluje. Jednak mogę również zmienić to na

b.A<T1>::template foo<T0>();

który również dobrze się kompiluje. eh?

Jak poprawnie wywołać funkcję członka szablonu w rozumieniu oryginalnego kodu?

questionAnswers(2)

yourAnswerToTheQuestion