Opened 11 years ago

Closed 10 years ago

Last modified 10 years ago

#6103 closed Bugs (fixed)

boost::range_detail vs. boost::range::range_detail compiler error

Reported by: zeratul976@… Owned by: Neil Groves
Milestone: To Be Determined Component: range
Version: Boost 1.47.0 Severity: Problem
Keywords: Cc:

Description

The following code:

#include <boost/range/algorithm/search_n.hpp>
#include <boost/range/join.hpp>

Produces the following compiler errors:

boost/range/join.hpp:44:39: error: expected template-name before '<' token
boost/range/join.hpp:44:39: error: expected '{' before '<' token
boost/range/join.hpp:44:39: error: expected unqualified-id before '<' token

The reason is that:

  • boost/range/algorithm/search_n.hpp introduces the namespace boost::range::range_detail
  • boost/range/join.hpp defines joined_type in boost::range_detail
  • boost/range/join.hpp then references range_detail::joined_type in boost::range, expecting it to resolve to boost::range_detail::joined_type, but due to the declaration in search_n.hpp, it resolves to boost::range::range_detail::joined_type (which does not exist)

This is easily fixable by fully qualifying boost::range_detail::joined_type in join.hpp, or by getting rid of the namespace boost::range::range_detail in search_n.hpp and using boost::range_detail instead.

Change History (5)

comment:1 by anonymous, 11 years ago

also see #6110 and #5627

comment:2 by Mr. Vagina, 10 years ago

VAGINA

comment:3 by Nathan Ridge, 10 years ago

Since search_n.hpp is the only header that uses the namespace boost::range::range_detail (everything else uses just boost::range_detail), I think the more principled solution is to change search_n.hpp to use boost::range_detail instead of boost::range::range_detail.

comment:4 by Nathan Ridge, 10 years ago

Resolution: fixed
Status: newclosed

(In [82071]) [range] corrected undesirable namespace nesting in algorithm/search_n.hpp; fixes #6103

comment:5 by Nathan Ridge, 10 years ago

(In [82139]) [range] merged bug fixes (r81890, refs #5603; r82071, refs #6103) from trunk

Note: See TracTickets for help on using tickets.