
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.
Follow-up: After fixing detail/has_binary_operator.hpp, has_postfix_operator.hpp and has_prefix_operator.hpp (by moving "Step 4" before "Step 2"), all the tests ran successfully on clang (trunk) both in C++03 and C++11 modes.
Dear Michel, Thank you very much for your message. At some point I changed something in the implementation and had to reorder the steps in the detail namespace. I did not see that the definition of the detail operator was coming too late but nothing told me the contrary because there was no failure with g++ and intel-linux. Now that you say it, I wonder why it works for other compilers! I have applied the changes and all tests still pass with g++ 4.5.2 and 4.6.1 and intel-linux 11 and 12. So I believe it is safe. Committed to trunk r74924. Can you rerun the test on the trunk? I will then ask for permission to merge to release if everything is fine (I would also wait for new testing with msvc). Frédéric