|
Boost : |
Subject: Re: [boost] [config] Visual C++ 2013 RC support - variadic template failures
From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2013-09-20 12:30:18
On 20 Sep 2013 at 10:51, Beman Dawes wrote:
> I updated boost/config Visual C++ support yesterday to add Visual C++ 2013
> RC support. But Mat Berchtold reported that signals2 tests then started to
> fail. I confirmed that 2013 RC tests were failing for signals2 and several
> of its dependencies, and narrowed it down to variadic templates so reverted
> to defining BOOST_NO_CXX11_VARIADIC_TEMPLATES for 2013 RC.
I fear the cause may be the same brittle N3276 decltype VS2013
implementation I found breaking my variadic template overloads in
AFIO. The main problem I found is that VS2013's decltype is too quick
to generate compile errors when fed an attempt to invoke call on a
non-callable.
I tried working around the problem by trying to partially specialise
a filter template type with all callable types in order to avoid
doing a decltype on slightly incorrect input. I was successful in all
but lambda types, because I couldn't figure out how to get VS2013 to
select a partial specialisation for lambda types i.e. I didn't figure
out how to replicate the trick on VS2013 of accessing the call
operator in the unknown lambda type like you can do on GCC or clang.
I ran out of time to experiment further, so I hacked out the opposite
filter of disabling the variadic overload for known non-variadic
overloads and diverting everything else to the variadic overload.
I hope this is useful to anyone else facing the same problem.
Niall
-- Currently unemployed and looking for work. Work Portfolio: http://careers.stackoverflow.com/nialldouglas/
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk