On 26.09.2017 21:49, coypu%sdf.org@localhost wrote: > Hi folks, > > warning, if you like C for its simplicity, do not read the below post. > > while looking at the stdatomic nonsense versions, I noticed we are using > tgmath.h from gcc, but no tgmath.h from clang, if the set lists are to > believed. > > randomly poking it turned out that in C99 you probably had to be a > compiler/extensions to implement tgmath*. with C11 generics, you don't. > > attached is a version that could use more testing & careful reading of > is standard. > > thoughts? > > * sizeof(double) == sizeof(complex float) > Can we just import as-is the FreeBSD version? It has support for pre-C11 compilers. This has header to be supported in the clean C99 mode. The GNU version supports GCC 2.7, while there is no need to support it any more (especially since it predates C99 (2.7 has been released in 1995)). I propose to add for the completeness C++ support in this header as defined by the C++ standard. #if (__cplusplus - 0) >= 201103L #include <cmath> #include <complex> #else // Here is the code from tgmath.h, supported in C++ < 2011 as the NetBSD extension #endif This is already handled in GNU libstdc++ and LLVM libc++ internally.. however it would be clearer and future compatible with alternative C++ runtime headers. Can we please reuse the template license header for new code? Public-domain might be problematic for strict people (it does not work for all countries).
Description: OpenPGP digital signature