
Frédéric Bron wrote:
I have seen that but honestly, I do not know how to improve the situation. I would need to have a clang compiler. I will try to install it on my linux machine but I guess the time to release is now very short.
OK, let's think about <boost/type_traits/has_negate.hpp>. Minimal test case: #include <iostream> #include <boost/type_traits/has_negate.hpp> struct XXX { }; int main (int argc, char* argv[]) { std::cout << boost::has_negate<XXX>::value << std::endl; return 0; } Clang's compilation error: boost/type_traits/detail/has_prefix_operator.hpp:72: error: call to function 'operator-' that is neither visible in the template definition nor found by argument-dependent lookup BOOST_STATIC_CONSTANT(bool, value = (sizeof(::boost::type_traits::yes_type)==sizeof(returns_void((BOOST_TT_TRAIT_OP make<Rhs>(),returns_void_t()))))); The error occurred because no_operator operator BOOST_TT_TRAIT_OP (const any&); is declared too late (line 135 in has_prefix_operator.hpp). Is it possible to move "Step 4" (line 122-135) before "Step 2" (line 51-74)? This removes the compilation errors in has_negate_test.cpp. I think other test failures on clang can be fixed in a similar way. Regards, Michel