namespace schultz { typedef float flop; template < typename T > inline typeof(((T) (*((T *) (0)))) * ((T) (*((T *) (0))))) square(const T & x) { } template < typename T > struct vector2 { inline typeof(((typeof (((T) (*((T *) (0)))) * ((T) (*((T *) (0)))))) (*((typeof (((T) (*((T *) (0)))) * ((T) (*((T *) (0))))) *) (0)))) + ((typeof (((T) (*((T *) (0)))) * ((T) (*((T *) (0)))))) (*((typeof (((T) (*((T *) (0)))) * ((T) (*((T *) (0))))) *) (0))))) operator *(const vector2 < T > &v) const { }}; struct circle { vector2 < flop > velocity; }; flop proj(const circle & C, vector2 < flop > P) { flop c = square(C.velocity); } }