jyknight wrote:

While libstdc++ could presumably be modified to work around the issues here, 
I'd just note again that IMO this is a wide-scale blocker for being able to use 
C++23 mode in Clang -- not just with libstdc++.

Sure, libc++ itself works. But, in some preliminary testing on our internal 
codebase, I found so much real-world code that is broken by 
`unique_ptr::~unique_ptr` and defaulted destructors becoming constexpr in C++23 
(which then triggers Clang's eager instantiation, which then requires type 
completeness "too early"), that I don't really contemplate being able to use 
Clang C++23, with libc++ until a change doing something like this (and the 
follow-up mentioned earlier) is landed.

While Clang's current choice of instantiation point for constexpr functions 
certainly is conforming with the standard -- Clang is the _only_ compiler for 
which adding more "constexpr" in a new version of the standard breaks vast 
amounts of existing user code by moving the _actual_ instantiation point 
earlier. Neither GCC nor MSVC have this problem.

https://github.com/llvm/llvm-project/pull/173537
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to