Opened 14 years ago
Closed 13 years ago
#2134 closed Bugs (fixed)
Namespace conflict in implementation of Boost.Integer
Reported by: | Daryle Walker | Owned by: | Daryle Walker |
---|---|---|---|
Milestone: | Boost 1.36.0 | Component: | integer |
Version: | Boost Development Trunk | Severity: | Problem |
Keywords: | integer namespace integer_traits | Cc: | jwulp@…, dwalker07@… |
Description
This is based off the thread starting at <http://lists.boost.org/Archives/boost/2008/07/139840.php>.
In "[source:trunk/boost/integer.hpp@47408 boost/integer.hpp]", class templates in the boost::detail
namespace refer to an unadorned integer_traits
template. The template referenced is meant to be boost::integer_traits
in "[source:trunk/boost/boost/integer_traits.hpp@32576 boost/integer_traits.hpp]". However, a boost::detail::integer_traits
template exists in "[source:trunk/boost/boost/detail/numeric_traits.hpp@24446 boost/detail/numeric_traits.hpp]". This latter template gets priority as the choice of what the unadorned integer_traits
mention refers to, which was not intended. The problem only manifests when "boost/detail/numeric_traits.hpp" gets #included, directly or indirectly, before "boost/integer.hpp", but doesn't manifest if "boost/integer.hpp" is #included first (which may be a ODR violation).
Thanks to Jeroen van der Wulp for initially reporting this and providing a potential patch.
Attachments (1)
Change History (5)
by , 14 years ago
Attachment: | boost-integer.hpp.diff added |
---|
comment:1 by , 14 years ago
Cc: | added |
---|
comment:2 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:3 by , 13 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Recent Trunk reversion has broken this - or rather it hasn't because Boost.Integer is no longer hiding it's details in the detail namespace - and it should.
comment:4 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Potential patch provided by Jeroen van der Wulp