Closed CaseyCarter closed 5 years ago
- Update CI config from range-v3, add MSVC to appveyor.
@ericniebler, would you be so kind as to enable this repo on AppVeyor?
For the record: I have never hated compilers more than I do right now after finishing this integration. I expected to find a new MSVC bug, so that was unsurprising, but I had no idea that fold expressions were so fragile in GCC. The fold expression implementation of and_c
that's been in cmcstl2's meta for two years, for example, doesn't work with any release of GCC. Redirecting through a bool
variable template seemed to fix everything, until I started testing range-v3: GCC 6 and 7 each failed to compile a different small subset of range-v3 tests even with the redirect but only when compiling with -g -march=native
. How can codegen flags affect template substitution and pack expansion???!?
I feel you.
Very good work! Thanks a lot. The experience with compilers is so frustrating, is it even getting better with all 20x stuff coming in, I doubt so...
Von meinem iPhone gesendet
Am 23.12.2018 um 09:12 schrieb gnzlbg notifications@github.com:
I feel you.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.
Wow, that looks like a lot of work. Thanks. I've enabled AppVeyor for this repo, but you might need to push a dummy commit here to get it to test the PR.
Also, I'll just leave this here.
until I started testing range-v3
I take from this that you did test this with range-v3, and I should be able to copy/paste this into range-v3 and it will Just Work. Is that right?
until I started testing range-v3
I take from this that you did test this with range-v3, and I should be able to copy/paste this into range-v3 and it will Just Work. Is that right?
Yes. I have range-v3 and cmcstl2 meta_update
branches that I copy/paste these headers into whenever I touch this branch. (cmcstl2 is a bit more than copy/paste - the headers used to live under stl2
in cmcstl2, I'm moving them out for consistency.)
Details:
Modernize cmake a bit, add support for MSVC/clang-cl.
Update CI config from range-v3, add MSVC to appveyor.
C++20-ify requires-clauses.
Armor
Integral
concept against non-constant expressions.Don't constraint all arguments of the concept implementations of
and_
,or_
, which causes instantation defeating the short-circuiting.Implement
and_v
andor_v
variable template forms ofand_c
andor_c
.detail::count_
: remove unused third template parameter.