Boost logo

Geometry :

Subject: [ggl] compile error with a custom linestring
From: Vishnu (vrang3)
Date: 2011-05-06 18:07:37

I have a compiler error on MSVC 2008 using boost-geometry-0.9.0. The error
appears to be due to my creating a custom linestring that isn't being
recognized as a geometry. I'm wondering whether someone can give me a more
specific pointer on what needs to be added to fix this.

First, the error:

D:\boost_1_46_1\boost/geometry/algorithms/expand.hpp(308) : error C2039:
'apply' : is not a member of 'boost::geometry::dispatch::ex
        .\plybld.cpp(183) : see reference to function template instantiation
'void boost::geometry::expand<Box2D,LineString2DWithID>
(Box &,const Geometry &)' being compiled
D:\boost_1_46_1\boost/geometry/algorithms/expand.hpp(308) : error C3861:
'apply': identifier not found
NMAKE : fatal error U1077: '"E:\Program Files\Microsoft Visual Studio
9.0\VC\BIN\cl.EXE"' : return code '0x2'

The custom linestring depends on a custom point, Point2D, registered thus:

BOOST_GEOMETRY_REGISTER_POINT_2D(Point2D, double, cs::cartesian, x(), y())

The custom linestring itself is defined and registered in this way:

struct LineString2DWithID : std::vector<Point2D>
        LineString2DWithID(unsigned int the_id) : id(the_id)

  LineString2DWithID() : id(0)

        unsigned int id;

// Register the linestring

The custom linestring is used in this manner:

void extendLines(double lineExtensionDistance,
        vector<LineString2DWithID> & lines)

        for (size_t i = 0; i < numLines; i++) {
                boost::geometry::expand(box, lines[i]);
                //size_t numPoints = lines[i].size();
                //for (size_t j = 0; j < numPoints; j++) {
                // boost::geometry::expand(box, lines[i][j]);


The compiler error disappears if I pass a custom point into the
boost::geometry::expand() function:

        for (size_t i = 0; i < numLines; i++) {
                //boost::geometry::expand(box, lines[i]);
                size_t numPoints = lines[i].size();
                for (size_t j = 0; j < numPoints; j++) {
                        boost::geometry::expand(box, lines[i][j]);

View this message in context:
Sent from the Boost Geometry mailing list archive at

Geometry list run by mateusz at