Ticket #6103 (closed Bugs: fixed)

Opened 6 years ago

Last modified 4 years ago

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

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


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

comment:1 Changed 5 years ago by anonymous

also see #6110 and #5627

comment:2 Changed 5 years ago by Mr. Vagina


comment:3 Changed 4 years ago by nathanridge

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 Changed 4 years ago by nathanridge

  • Status changed from new to closed
  • Resolution set to fixed

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

comment:5 Changed 4 years ago by nathanridge

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


Add a comment

Modify Ticket

Change Properties
<Author field>
as closed
The resolution will be deleted. Next status will be 'reopened'

E-mail address and user name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.