ericniebler / meta

A tiny metaprogramming library
Boost Software License 1.0
302 stars 47 forks source link

Merge the three streams of meta: #60

Closed CaseyCarter closed 5 years ago

CaseyCarter commented 5 years ago

Details:

CaseyCarter commented 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?

CaseyCarter commented 5 years ago

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???!?

gnzlbg commented 5 years ago

I feel you.

gabyx commented 5 years ago

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.

ericniebler commented 5 years ago

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. DON'T CROSS THE STREAMS

ericniebler commented 5 years ago

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?

CaseyCarter commented 5 years ago

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.)