Subject: [Boost-bugs] [Boost C++ Libraries] #11522: Boost.Geometry - not enough namespace prefixing in boost/geometry/detail/buffer/buffered_ring.hpp
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-08-02 19:04:22
#11522: Boost.Geometry - not enough namespace prefixing in
boost/geometry/detail/buffer/buffered_ring.hpp
------------------------------+---------------------------
Reporter: steve.hickman@⦠| Owner: barendgehrels
Type: Bugs | Status: new
Milestone: To Be Determined | Component: geometry
Version: Boost 1.58.0 | Severity: Showstopper
Keywords: |
------------------------------+---------------------------
Compiling v 1.58 with Visual Studio 2012, I get the following errors:
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(98):
error C3083: 'buffer': the symbol to the left of a '::' must be a type
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(98):
error C2039: 'buffered_ring' : is not a member of
'boost::geometry::traits::detail'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(98):
error C2065: 'buffered_ring' : undeclared identifier
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(98):
error C2974: 'boost::geometry::traits::tag' : invalid template argument
for 'Geometry', type expected
1> d:\boost\boost_1_58_0\boost\geometry\core\tag.hpp(42) : see
declaration of 'boost::geometry::traits::tag'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(98):
error C2143: syntax error : missing ';' before '>'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(98):
error C2976: 'boost::geometry::traits::tag' : too few template arguments
1> d:\boost\boost_1_58_0\boost\geometry\core\tag.hpp(42) : see
declaration of 'boost::geometry::traits::tag'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(98):
error C2059: syntax error : '>'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(99):
error C2143: syntax error : missing ';' before '{'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(99):
error C2447: '{' : missing function header (old-style formal list?)
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(105):
error C3083: 'buffer': the symbol to the left of a '::' must be a type
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(105):
error C2039: 'buffered_ring' : is not a member of
'boost::geometry::traits::detail'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(105):
error C2065: 'buffered_ring' : undeclared identifier
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(105):
error C2974: 'boost::geometry::traits::point_order' : invalid template
argument for 'Ring', type expected
1> d:\boost\boost_1_58_0\boost\geometry\core\point_order.hpp(70)
: see declaration of 'boost::geometry::traits::point_order'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(105):
error C2143: syntax error : missing ';' before '>'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(105):
error C2059: syntax error : '>'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(106):
error C2143: syntax error : missing ';' before '{'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(106):
error C2447: '{' : missing function header (old-style formal list?)
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(112):
error C3083: 'buffer': the symbol to the left of a '::' must be a type
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(112):
error C2039: 'buffered_ring' : is not a member of
'boost::geometry::traits::detail'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(112):
error C2065: 'buffered_ring' : undeclared identifier
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(112):
error C2974: 'boost::geometry::traits::closure' : invalid template
argument for 'G', type expected
1> d:\boost\boost_1_58_0\boost\geometry\core\closure.hpp(76) :
see declaration of 'boost::geometry::traits::closure'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(112):
error C2143: syntax error : missing ';' before '>'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(112):
error C2059: syntax error : '>'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(113):
error C2143: syntax error : missing ';' before '{'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(113):
error C2447: '{' : missing function header (old-style formal list?)
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(119):
error C3083: 'buffer': the symbol to the left of a '::' must be a type
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(119):
error C2039: 'buffered_ring_collection' : is not a member of
'boost::geometry::traits::detail'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(119):
error C2065: 'buffered_ring_collection' : undeclared identifier
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(119):
error C2974: 'boost::geometry::traits::point_type' : invalid template
argument for 'Geometry', type expected
1> d:\boost\boost_1_58_0\boost\geometry\core\point_type.hpp(44) :
see declaration of 'boost::geometry::traits::point_type'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(119):
error C2143: syntax error : missing ';' before '>'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(119):
error C2059: syntax error : '>'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(120):
error C2143: syntax error : missing ';' before '{'
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(120):
error C2447: '{' : missing function header (old-style formal list?)
1>d:\boost\boost_1_58_0\boost\geometry\algorithms\detail\buffer\buffered_ring.hpp(128):
error C2976: 'boost::geometry::traits::tag' : too few template arguments
1> d:\boost\boost_1_58_0\boost\geometry\core\tag.hpp(42) : see
declaration of 'boost::geometry::traits::tag'
1>d:\boost\boost_1_58_0\boost\geometry\geometries\linestring.hpp(119):
error C3855: 'boost::geometry::traits::tag': template parameter 'Enable'
is incompatible with the declaration
1>d:\boost\boost_1_58_0\boost\geometry\geometries\linestring.hpp(119):
error C2977: 'boost::geometry::traits::tag' : too many template arguments
1> d:\boost\boost_1_58_0\boost\geometry\core\tag.hpp(42) : see
declaration of 'boost::geometry::traits::tag'
1>d:\boost\boost_1_58_0\boost\geometry\geometries\polygon.hpp(174): error
C3855: 'boost::geometry::traits::tag': template parameter 'Enable' is
incompatible with the declaration
1>d:\boost\boost_1_58_0\boost\geometry\geometries\polygon.hpp(174): error
C2977: 'boost::geometry::traits::tag' : too many template arguments
1> d:\boost\boost_1_58_0\boost\geometry\core\tag.hpp(42) : see
declaration of 'boost::geometry::traits::tag'
1>d:\boost\boost_1_58_0\boost\geometry\geometries\multi_point.hpp(118):
error C3855: 'boost::geometry::traits::tag': template parameter 'Enable'
is incompatible with the declaration
1>d:\boost\boost_1_58_0\boost\geometry\geometries\multi_point.hpp(118):
error C2977: 'boost::geometry::traits::tag' : too many template arguments
1> d:\boost\boost_1_58_0\boost\geometry\core\tag.hpp(42) : see
declaration of 'boost::geometry::traits::tag'
1>d:\boost\boost_1_58_0\boost\geometry\geometries\multi_linestring.hpp(112):
error C3855: 'boost::geometry::traits::tag': template parameter 'Enable'
is incompatible with the declaration
1>d:\boost\boost_1_58_0\boost\geometry\geometries\multi_linestring.hpp(112):
error C2977: 'boost::geometry::traits::tag' : too many template arguments
1> d:\boost\boost_1_58_0\boost\geometry\core\tag.hpp(42) : see
declaration of 'boost::geometry::traits::tag'
1>d:\boost\boost_1_58_0\boost\geometry\geometries\point_xy.hpp(88): error
C2953: 'boost::geometry::traits::tag' : class template has already been
defined
1> d:\boost\boost_1_58_0\boost\geometry\core\tag.hpp(42) : see
declaration of 'boost::geometry::traits::tag'
----------------------------------------------------
The problem is that the namespace hierarchy is such that lines with the
errors are in a different namespace hierarchy (boost::geometry::detail)
than the structs they are referring to (boost::geometry). Because these
references aren't fully prefixed, the compiler can't find them (there is
no "using namespace boost::geometry" preceding their inclusion. Libraries
should not assume that users will specify such a thing.) This can be fixed
by editing lines 97-128 to be the following:
---------------------------------------------------
template <typename Ring>
struct tag<boost::geometry::detail::buffer::buffered_ring<Ring> >
{
typedef ring_tag type;
};
template <typename Ring>
struct point_order<boost::geometry::detail::buffer::buffered_ring<Ring> >
{
static const order_selector value =
geometry::point_order<Ring>::value;
};
template <typename Ring>
struct closure<boost::geometry::detail::buffer::buffered_ring<Ring> >
{
static const closure_selector value = geometry::closure<Ring>::value;
};
template <typename Ring>
struct
point_type<boost::geometry::detail::buffer::buffered_ring_collection<Ring>
>
{
typedef typename geometry::point_type<Ring>::type type;
};
template <typename Ring>
struct tag<boost::geometry::detail::buffer::buffered_ring_collection<Ring>
>
{
typedef boost::geometry::detail::buffer::buffered_ring_collection_tag
type;
};
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/11522> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:18 UTC