template <class T> class Vector { T t; public: T &operator [](int i) { return t; } }; template <class R> class Point { public: R x, y, z; R mod2() const { return x*x+y*y+z*z; } }; template <class T, class R> bool blend(Vector<T> &p, const R epsilon) { R m = p[0].mod2(); return m < epsilon ? true : false; } int main() { Vector< Point<double> > u; return blend(u, 1E-6); }