On Tue, Apr 18, 2017 at 08:24:55PM +0200, Christian Weisgerber wrote: > I tried to get boost to build with clang, but failed pretty miserably > because I don't know what I'm doing. > > If anybody wants to look into this, here's what I got: > * Configure with --with-toolset=clang > * Fix boost_has_nl_types_h.ipp, from upstream. > * Some haphazard changes to clang-linux.jam, patterned after those > to gcc.jam. Likely incomplete. > > I got stumped at the first non-trivial problem: > > ./boost/type_traits/is_convertible.hpp:86:63: error: too many arguments > provided to function-like macro invocation > static decltype(test_aux<To1>(boost::declval<From1>()), one()) > test(int); > ^ > /usr/include/c++/v1/__config:673:11: note: macro 'decltype' defined here > # define decltype(__x) __decltype(__x) > ^ > > As far as I can google, decltype(a, b) is valid, but it fails due > to our macro. FreeBSD somehow doesn't run into this, but I don't > know why.
decltype is a built-in starting in C++11. What you have here is compatibility glue happening before C++11.