|
Boost : |
Subject: Re: [boost] [1.48.0] TypeTraits additions
From: Michel Morin (mimomorin_at_[hidden])
Date: 2011-10-11 22:31:50
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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk