I've updated the QVM library (which hasn't been reviewed yet),
including minor changes plus a workaround for what appears to be a
parsing bug in msvc-12:
http://www.revergestudios.com/boost-qvm/
--
Emil Dotchevski
Reverge Studios, Inc.
http://www.revergestudios.com/reblog/index.php?n=ReCode
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
[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
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
participants (2)
-
Emil Dotchevski
-
Stephan T. Lavavej