Issue 137704
Summary libc++ headers vs GCC 15 type traits builtins
Labels libc++
Assignees
Reporter frobtech
    Between GCC 14 and GCC 15, a bunch of new C++ traits builtins were added that Clang already has:
```
1b7cfa715c6 c++: introduce __builtin_is_virtual_base_of 
3dab8f8a542 c++: Implement __is_nothrow_invocable built-in trait                
7bd33955970 c++: Implement __is_invocable built-in trait                        
37fad797ade c++: Implement __array_rank built-in trait                          
142d1d8e057 c++: Implement __decay built-in trait                               
85c2ba42441 c++: Implement __add_rvalue_reference built-in trait 
c08d1afbf53 c++: Implement __add_lvalue_reference built-in trait 
86812be98a1 c++: Implement __remove_all_extents built-in trait 
e1ca1fa1c7a c++: Implement __remove_extent built-in trait 
2763f81e0b9 c++: Implement __add_pointer built-in trait 
06d64eb96cd c++: Implement __is_unbounded_array built-in trait                  
cb5d904c775 c++: Implement __is_pointer built-in trait                          
9b51b3e79e4 c++: Implement __is_volatile built-in trait                         
7dd8c905219 c++: Implement __is_const built-in trait                            
```

Unlike Clang, GCC gets upset if these are used via template aliases rather than only via the standard `...::type` type aliases.
PR #81386 addressed the same issue earlier for `__remove_cv` and `__remove_cvref`.
Equivalent changes are needed for all the other ones where `__has_builtin(...)` has become true in GCC 15.

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

Reply via email to