Vorlagenparameter als Vorlagenparameter verwenden

Warum ist der folgende Code ungültig?

template <typename S, typename T>
struct B{
    void f(T t, S s) {t.f<S>(s); }
};

gcc 4.3.4 beschwert sich, dass es "Primärausdruck vor '>' Token erwartet", d. h., dass "S" kein gültiger Primärausdruck war.