Boost logo

Boost :

Subject: Re: [boost] VC2013 1.55 beta failures
From: Beman Dawes (bdawes_at_[hidden])
Date: 2013-10-23 11:48:47


On Tue, Oct 22, 2013 at 2:50 PM, Stephan T. Lavavej <
stl_at_[hidden]> wrote:

> [Marcel Raad]
> > slot<F>(const F &f)
> > slot<BindArgs...>(const BindArgs &...args)
> > MSVC12 always chooses the variadic constructor
>
> Wow, that's a bug. I've filed DevDiv#807268 "meow(const T&) should be
> considered to be more specialized than meow(const Args&...)" in our
> internal database with a reduced repro:
>
> C:\Temp>type meow.cpp
> #include <stdio.h>
>
> template <typename T> void meow(const T&) {
> puts("meow(const T&), GOOD");
> }
>
> template <typename... Args> void meow(const Args&...) {
> puts("meow(const Args&...), BAD");
> }
>
> int main() {
> meow(1729);
> }
>
> C:\Temp>cl /EHsc /nologo /W4 meow.cpp
> meow.cpp
>
> C:\Temp>meow
> meow(const Args&...), BAD
>

Thanks STL for following up on this.

I've like help translating this bug into what action Boost.Config should
take for Boost 1.55. Currently we define BOOST_NO_CXX11_VARIADIC_TEMPLATES
in trunk so that signals2 and its dependencies pass their regression tests.

Should we continue to define BOOST_NO_CXX11_VARIADIC_TEMPLATES for VC++
2013, or should we not define it and get signals2 working with a problem
specific workaround?

I have a weak preference for not defining it, but would very much like to
hear opinions for anyone, but particularly release managers.

Whatever we do, I want to do it right away so that there is time to merge
into release for 1.55.

Thanks,

--Beman


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk