
Ion Gaztañaga <igaztanaga <at> gmail.com> writes:
On 15/10/2015 20:40, Joaquín M LópezMuñoz wrote:
Won't you have direct access to a local MSVC 7.1 installation to play with prior to commiting any changes to github? The if_ thing in particular seems inoffensive enough to try out.
I tried with no luck. It doesn't seem related to is_const, MSVC-7.1 considers both
const_ref_global_fun_base::operator()(reference_wrapper<Arg>)
overloads exactly equal, even if BOOST_STATIC_ASSERT in that class considers both arguments are not the same.
Overloads can be only be equal if either Value is not a const type or boost::remove_const is not working... and moreover this was working perfectly fine against former versions of Boost.TypeTraits. The problem happens not only with global_fun but also with identity, which might be easier to analyze. Could you please run this and report the results? #include <boost/multi_index/identity.hpp> #include <boost/type_traits/is_base_and_derived.hpp> #include <iostream> struct X{}; template<typename Type> bool const_identity_base_selected() { return boost::is_base_and_derived< boost::multi_index::detail::const_identity_base<Type>, boost::multi_index::identity<Type>
::value; }
int main() { std::cout<<const_identity_base_selected<int>()<<"\n"; std::cout<<const_identity_base_selected<const int>()<<"\n"; std::cout<<const_identity_base_selected<X>()<<"\n"; std::cout<<const_identity_base_selected<const X>()<<"\n"; } The correct result should be: 0 1 0 1 Thanks for your help, Joaquín M López Muñoz Telefónica