On Wed, 24 Sept 2025 at 12:53, Tomasz Kamiński <[email protected]> wrote:
>
> From: Luc Grosheintz <[email protected]>
>
> 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 <[email protected]>
> Co-authored-by: Tomasz Kamiński <[email protected]>
> Signed-off-by: Luc Grosheintz <[email protected]>
> Signed-off-by: Tomasz Kamiński <[email protected]>
> ---
> v4 expands test to C++17.
> Tested the file with all supported standard and got result:
> # of expected passes 4 (17, 20, 23, 26)
> # of unsupported tests 3 (98, 11, 14)
The patch below has { target c++20 } which should mean it isn't run
for C++17, but that doesn't match the results above.
However, std::not_fn is actually in C++17, so I was wrong to say {
target c++20 } in my earlier email. Did you actually fix that, but
send the wrong patch?
>
> OK for trunk?
>
> .../20_util/function_objects/not_fn/nttp.cc | 6 ------
> .../20_util/function_objects/not_fn/version.cc | 12 ++++++++++++
> 2 files changed, 12 insertions(+), 6 deletions(-)
> create mode 100644
> libstdc++-v3/testsuite/20_util/function_objects/not_fn/version.cc
>
> diff --git a/libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc
> b/libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc
> index d35d828f14c..d24ccf8a187 100644
> --- a/libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc
> +++ b/libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc
> @@ -2,12 +2,6 @@
>
> // { 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>
>
> diff --git
> a/libstdc++-v3/testsuite/20_util/function_objects/not_fn/version.cc
> b/libstdc++-v3/testsuite/20_util/function_objects/not_fn/version.cc
> new file mode 100644
> index 00000000000..11ae063e58e
> --- /dev/null
> +++ b/libstdc++-v3/testsuite/20_util/function_objects/not_fn/version.cc
> @@ -0,0 +1,12 @@
> +// { dg-do preprocess { target c++20 } }
> +// { 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_mdspan has the wrong value for C++20 or
> later"
> +#elif __cplusplus > 202302L && __cpp_lib_not_fn < 202306L
> +#error "Feature test macro __cpp_lib_mdspan has the wrong value for C++26 or
> later"
> +#endif
> --
> 2.51.0
>