When running the tests without pre-compiled headers
(--disable-libstdcxx-pch), the test fails, because the feature
testing macro (FTM) isn't defined yet.
This commit moves checking the FTM to a dedicated file (version.cc)
that's run without PCH.
libstdc++-v3/ChangeLog:
* testsuite/20_util/function_objects/not_fn/nttp.cc: Move
test of feature testing macro to version.cc
* testsuite/20_util/function_objects/not_fn/version.cc: New test.
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Co-authored-by: Tomasz Kamiński <tkaminsk@redhat.com>
Signed-off-by: Luc Grosheintz <luc.grosheintz@gmail.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
// { dg-do run { target c++26 } }
-#ifndef __cpp_lib_not_fn
-# error "Feature test macro for not_fn is missing in <functional>"
-#elif __cpp_lib_not_fn < 202306L
-# error "Feature test macro for not_fn has wrong value in <functional>"
-#endif
-
#include <functional>
#include <testsuite_hooks.h>
--- /dev/null
+// { dg-do preprocess { target c++17 } }
+// { dg-add-options no_pch }
+
+#include <functional>
+
+#ifndef __cpp_lib_not_fn
+# error "Feature test macro for not_fn is missing in <functional>"
+#elif __cpp_lib_not_fn < 201603L
+# error "Feature test macro __cpp_lib_not_fn has the wrong value for C++17 or later"
+#elif __cplusplus > 202302L && __cpp_lib_not_fn < 202306L
+# error "Feature test macro __cpp_lib_not_fn has the wrong value for C++26 or later"
+#endif