Hi,

2014-10-24 17:55 GMT+02:00 jakka30 <sjakka@geocue.com>:
Hello Adam,

Thank you for your reply. We registered our legacy geometries with
boost::geometry. Here is my point registration details.


Did you also use MSVS2012 with Boost 1.55?

The default versions of traits indeed has additional template parameter Enable defaulting to void but it should work as expected. I'm not sure if this additional parameter is really required and it may be misleading but the code shouldn't fail to compile. This was added 3 years ago: https://github.com/boostorg/geometry/commit/e051050b44a15e713a46e3268f7390919e1a4685. So it was released with the first released version of Boost.Geometry in Boost 1.47.

The adaptation of a QCS::Point2D<> looks ok. Besides those &lt; characters.
Why some of the less operators/angle brackets was pasted below correctly but some of them are represented as &lt; ?
Does it look the same in your code?
Honestly, the errors you pasted looked like if there was some brackets missing "}" or there was some additional semicolons ";" in wrong places.

Btw, when I mentioned a failing example I had a code of a full, failing program in mind. Some *.cpp file that fails to compile. Would something like this be possible?
Does the attached test file work for you?

Regards,
Adam
 

//Point 2D registration wtih Boost
namespace boost
{
        namespace geometry
        {
                namespace traits
                {
                        template<typename P> struct tag<QCS::Point2D&lt;P>> { typedef point_tag
type; };
                        template<typename P> struct dimension<QCS::Point2D&lt;P>> :
boost::mpl::int_<2> {};
                        template<typename P> struct coordinate_type<QCS::Point2D&lt;P>> { typedef
P type; };
                        template<typename P> struct coordinate_system<QCS::Point2D&lt;P>> {
typedef cs::cartesian type; };

                        template<typename P> struct access<QCS::Point2D&lt;P>, 0>
                        {
                                static inline P get(QCS::Point2D<P> const& p)
                                { return  p.m_x; }
                                static inline void set(QCS::Point2D<P>& p, P const& value)
                                { p.SetX(value); }
                        };

                        template<typename P> struct access<QCS::Point2D&lt;P>, 1>
                        {
                                static inline P get(QCS::Point2D<P> const& p)
                                { return  p.m_y; }
                                static inline void set(QCS::Point2D<P>& p, P const& value)
                                { p.SetY(value); }
                        };
                }
        }
}

I am getting the following errors in 1.56 but it was working fine in 1.55

>q:\libraries\geometrylib\point.h(170): error C2976:
'boost::geometry::traits::tag' : too few template arguments
1>          t:\boost\boost\geometry\core\tag.hpp(42) : see declaration of
'boost::geometry::traits::tag'