
On Tue, Oct 22, 2013 at 2:50 PM, Stephan T. Lavavej < stl@exchange.microsoft.com> wrote:
[Marcel Raad]
slot<F>(const F &f) slot
(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
template <typename T> void meow(const T&) { puts("meow(const T&), GOOD"); }
template
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