libcudacxx
libcudacxx copied to clipboard
Implement concept emulation for C++14 / C++17
This also ports all the standard concepts from libc++ preserving the new modular organization.
This will be a base for further development such as memory_resource
or in the far future ranges
@miscco for the benefit of others (and my future self when I invariably forget) could you write a brief summary in the PR description with what this is doing and what it enables?
@griwes I think I have addressed all comments, It would be great if you could just skimm over those changes
@miscco I don't think you've actually pushed the changes?
@miscco I don't think you've actually pushed the changes?
Oh I did push, just to a different repository 🤦
Thanks a lot, I have no idea why it sometimes creeps up into changes.
We passed the internal CI, and I pushed a final commit to _UGLIFY the macro definitions. I believe this is ready to be merged @griwes WDYT?
I'm also seeing a couple of failures locally, with CUDA 11.8 and gcc-11:
libcu++ :: std/concepts/concepts.compare/concept.equalitycomparable/equality_comparable.compile.pass.cpp
libcu++ :: std/concepts/concepts.compare/concepts.totallyordered/totally_ordered.pass.cpp
- Alternatively, we could move the emulation header into the libc++ layer and make the libc++ code paths also be fully backported this way. This is probably more work and I think would also need an extra thin wrapper header for the emulation header at the libcu++ layer.
I believe that is the way forward. It should be as simple as adding #include <__concepts/__concepts_macros.h>
everywhere once moves