__has_extension
__has_extension(c_generic_selections)
#if !__has_extension(c_alignas)
__has_extension(cxx_alignas)
#if !__has_extension(c_atomic) && !__has_extension(cxx_atomic)
#if !__has_extension(c_static_assert)
__has_extension(cxx_static_assert)
#if !__has_extension(c_thread_local)
__has_extension(cxx_thread_local)
__has_extension(c_generic_selections)
#ifndef __has_extension
#if __has_extension(c_thread_safety_attributes)
#if !defined HAVE__GENERIC && defined __has_extension
# if !__has_extension(c_generic_selections)
#ifndef __has_extension
#if !__has_extension(c_static_assert)
__has_extension(cxx_static_assert)