Boost logo

Boost :

Subject: Re: [boost] QVM library
From: Stephan T. Lavavej (stl_at_[hidden])
Date: 2014-06-08 14:22:49


[Emil Dotchevski]
> P.S. Perhaps STL can confirm, I'm guessing that the MSVC bug
> was introduced by the added rvalue reference support, which
> interfered with the heuristics MSVC uses to attempt to
> successfully parse non-conformant code that doesn't use mandatory
> "typename". This can be seen for example in q.hpp, which used to contain functions like:
> template <class A,class B>
> typename enable_if_c<
> is_q<A>::value && is_q<B>::value,
> A &>::type
> operator-=( A & a, B const & b )

I believe this is unrelated to missing-typename nonconformance (remember, VC doesn't do two-phase name lookup, so template parsing is effectively deferred until instantiation, where the typeness of stuff is known) and rvalue references (you should be able to trigger the same issue with "||"). Instead, VC wasn't keeping around all of the information needed for template non-type parameters. A bug in this area was fixed for VS14, you can try CTP1 to check. Or if you send me a self-contained repro, I can compile it with our current development build.

STL


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