joerg added a comment.

libc++ has no idea what a correct max_align_t is. The internal definition works 
due to historic requirements that all three fundamental types are supported for 
new/delete, but we don't have any such guarantees for every other context. A 
correctly implemented stddef.h does not provide max_align_t in C++03 mode, 
since that would pollute the global namespace. This means that libc++ currently 
has two failure modes: on NetBSD, it outright tries to use a non-existing 
symbol. On other platforms it silently defines max_align_t in a way that can be 
subtle wrong.

I should add that e.g. libstdc++ doesn't provide it either, so at least 
somewhat portable C++03 code can not depend on the presence anyway.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D73245/new/

https://reviews.llvm.org/D73245



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to