[cfe-dev] Keyword warnings in libc++'s type_traits and other headers

Howard Hinnant howard.hinnant at gmail.com
Tue Dec 24 13:33:15 PST 2013


I believe Marshall and I are agreed that a prefix makes an identifier safer.

I believe this train headed off the rails when both Marshall and I interpreted this thread as saying that these rules only applied to libc++, and not to clang.  clang can (and sonetimes does) also protect itself with prefixes.

I understand that sometimes clang has other constraints that force its choice of keywords.

Others must understand that prefixing the entire libc++ library is not in the cards.  Nor is prefixing the entire C library on any OS, or the multitude of other OS headers.  When conflicts are found, they are dealt with.

The underscored namespace (17.6.4.3 [reserved.names]) belongs to the OS, the C lib, the C++ library, and the compiler.  Perhaps I wrongly interpreted the message "get out" somewhere.  For now I will assume that I did.  libc++ is not going to exit this namespace.

As __is_void et al. have apparently been co-existing for a couple years, this does not seem like an incredibly urgent issue.  Nor do I believe it should be ignored.

I recommend we take a couple days off and come back ready to negotiate in good faith a solution to this specific problem.  Personally I would like to learn just how much out of date:

http://clang.llvm.org/docs/LanguageExtensions.html#checks-for-type-traits

is, and see it brought up to date.  The lack of documentation, and the inability to check for these intrinsics has me feeling a bit blind.

Howard





More information about the cfe-dev mailing list