id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc
8679,Boost.Test pollutes boost namespace with it's own enable_if/disable_if templates,John Maddock,Gennadiy Rozental,"The following test program:
{{{
#define BOOST_TEST_MODULE my_test
#include
#define BOOST_TEST_MAIN
#include // Note: header-only Boost.Test
#include
BOOST_AUTO_TEST_CASE(my_test)
{
typedef boost::multiprecision::number,
boost::multiprecision::et_off> mp_type;
const mp_type test_value = mp_type(12) / 7;
}
}}}
Fails to compile due to ambiguities between boost::enable_if and boost::unit_test::decorator::disable_if:
{{{
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(118): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1> d:\data\boost\trunk\boost\type_traits\is_convertible.hpp(484) : see reference to class template instantiation 'boost::multiprecision::number' being compiled
1> with
1> [
1> Backend=boost::multiprecision::backends::cpp_dec_float<50>
1> ]
1> d:\data\boost\trunk\boost\multiprecision\detail\no_et_ops.hpp(455) : see reference to class template instantiation 'boost::is_convertible' being compiled
1> with
1> [
1> From=__int64,
1> To=boost::multiprecision::number>
1> ]
1> d:\data\boost\trunk\ide\math\scrap\scrap.cpp(38) : see reference to function template instantiation 'boost::multiprecision::number boost::multiprecision::operator /,int>(boost::multiprecision::number &&,const V &)' being compiled
1> with
1> [
1> Backend=boost::multiprecision::backends::cpp_dec_float<50>,
1> ExpressionTemplates=et_off,
1> Digits10=50,
1> V=int
1> ]
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(118): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(118): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(118): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(124): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(124): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(124): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(124): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(131): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(131): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(153): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(153): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(168): error C2872: 'disable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(59) : boost::disable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(197) : boost::unit_test::decorator::disable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(168): error C2872: 'disable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(59) : boost::disable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(197) : boost::unit_test::decorator::disable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(237): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(237): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(268): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(268): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(312): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(312): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(343): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(343): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(391): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(391): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(400): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(400): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(431): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(431): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(465): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(465): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(500): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(500): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(533): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(533): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(661): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(661): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(1637): error C2872: 'disable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(59) : boost::disable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(197) : boost::unit_test::decorator::disable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(1637): error C2872: 'disable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(59) : boost::disable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(197) : boost::unit_test::decorator::disable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(1640): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
1>d:\data\boost\trunk\boost\multiprecision\number.hpp(1640): error C2872: 'enable_if' : ambiguous symbol
1> could be 'd:\data\boost\trunk\boost\utility\enable_if.hpp(36) : boost::enable_if'
1> or 'd:\data\boost\trunk\boost\test\tree\decorator.hpp(184) : boost::unit_test::decorator::enable_if'
}}}
IMO Boost.Test should not pollute namespace boost with types of the same name as other types already there.
",Bugs,closed,Boost 1.59.0,test,Boost Development Trunk,Showstopper,fixed,,