> From: "Ted Unangst" <t...@tedunangst.com> > Date: Sun, 28 May 2017 11:16:21 -0400 > > Vadim Zhukov wrote: > > While working on getting Boost & its friends work under Clang, > > I've stumbled upon the code that looks like the following: > > > > decltype(x, y) z = w; > > why not espie's fix from earlier?
Well, I asked him to report this upstream and see what they say. I don't pretend to understand any of this, but I'd be seriously surprised if libc++ wouldn't work with something mainstream as boost. So my suspicion is that something else is wrong... > >>>> > > but clang++ has variadic macros, like C99... the following patch allows > macro decltype() to work a lot more like builtin __decltype in pre-C++11 > > (note that still works with -std=c++98 -pedantic, much to my surprise, but > which is cool) > > Index: __config > =================================================================== > RCS file: /cvs/src/lib/libcxx/include/__config,v > retrieving revision 1.3 > diff -u -p -r1.3 __config > --- __config 19 Sep 2016 22:17:22 -0000 1.3 > +++ __config 5 May 2017 15:21:58 -0000 > @@ -670,7 +670,7 @@ template <unsigned> struct __static_asse > #ifdef _LIBCPP_HAS_NO_DECLTYPE > // GCC 4.6 provides __decltype in all standard modes. > #if !__is_identifier(__decltype) || _GNUC_VER >= 406 > -# define decltype(__x) __decltype(__x) > +# define decltype(__x, ...) __decltype(__x, ##__VA_ARGS__) > #else > # define decltype(__x) __typeof__(__x) > #endif > >