__GNUC_PREREQ__
#if __GNUC_PREREQ__(2, 96)
#if __GNUC_PREREQ__(4, 1)
#if __GNUC_PREREQ__(3, 1)
#if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER)
#if __GNUC_PREREQ__(2, 7) || defined(__INTEL_COMPILER)
#if __GNUC_PREREQ__(4, 3)
#if __GNUC_PREREQ__(4, 9)
#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
(defined(__clang__) || __GNUC_PREREQ__(4, 6)) && \
#if __GNUC_PREREQ__(3, 1)
#if __GNUC_PREREQ__(3, 3)
#if __GNUC_PREREQ__(4,6) && !defined(__cplusplus)