Ticket #2134 (closed Bugs: fixed)
Namespace conflict in implementation of Boost.Integer
|Reported by:||dlwalker||Owned by:||dlwalker|
|Version:||Boost Development Trunk||Severity:||Problem|
|Keywords:||integer namespace integer_traits||Cc:||jwulp@…, dwalker07@…|
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.
- Status changed from closed to reopened
- Resolution fixed deleted