Clang has been providing __is_void for a very long time now, and is definitely compatible with libstdc++. Does defining this builtin cause a problem? Might be that the lookup rules for builtins are different or something. https://clang.llvm.org/docs/LanguageExtensions.html#type-trait-primitives On Sat, 25 Mar 2023 at 15:08, Ken Matsui via Gcc wrote: > Hi, > > I am working on the GSoC project, "C++: Implement compiler built-in > traits for the standard library traits". > > Built-in trait naming simply adds two underscores (__) to the original > trait name. However, the same names are already in use for some > built-in traits, such as is_void, is_pointer, and is_signed. > > For example, __is_void is used in the following files: > > * gcc/testsuite/g++.dg/tm/pr46567.C > * libstdc++-v3/include/bits/cpp_type_traits.h > > In this case, are we supposed to change the existing same name in the > code to something like ____is_void (four underscores)? Or is it better > to break the naming convention of built-in traits like > __is_void_builtin? > > Sincerely, > Ken Matsui >