Boost logo

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