template<int R, int C, typename T>
struct Vector {
template <typename TRes> TRes magnitude() const { return 0; }
};
struct A {
typedef Vector<3,1,int> NodeVector;
};
template<class T> struct B {
void foo()
{
typename T::NodeVector x;
x.magnitude<double>(); //< error here
}
};