Boost.Geometry requires your point type to be adapted to the point described here:
http://www.boost.org/doc/libs/1_54_0/libs/geometry/doc/html/geometry/reference/concepts/concept_point.html
Your derived type myPoint must also be adapted, because it is different from your base type, model :: pointer <>. The reason for this is that the library allows you to adapt obsolete classes and use them as geometry without modification.
To adapt it, you must either use one of the registration macros, or independently determine all the necessary features. Besides the comment above, see Those:
http://www.boost.org/doc/libs/1_54_0/libs/geometry/doc/html/geometry/examples.html
In the second, the Point type is adapted by manual specialization of all the necessary attributes, which is the most flexible approach. In your case, it will look like this:
namespace boost { namespace geometry { namespace traits { template <typename C, std::size_t D, typename S> struct tag< myPoint<C, D, S> > { typedef point_tag type; }; template <typename C, std::size_t D, typename S> struct coordinate_type< myPoint<C, D, S> > { typedef C type; }; template <typename C, std::size_t D, typename S> struct coordinate_system< myPoint<C, D, S> > { typedef S type; }; template <typename C, std::size_t D, typename S> struct dimension< myPoint<C, D, S> > { static const std::size_t value = D; }; template <typename C, std::size_t D, typename S, std::size_t I> struct access<myPoint<C, D, S>, I> { static inline C get(myPoint<C, D, S> const& p) { return p.template get<I>(); } static inline void set(myPoint<C, D, S> & p, C const& v) { p.template set<I>(v); } }; }}}
Just insert it after defining the point and finish.