#6103 closed Bugs (fixed)
boost::range_detail vs. boost::range::range_detail compiler error
Reported by: | 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 , 11 years ago
comment:3 by , 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 , 10 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
also see #6110 and #5627