catchorg / catchorg/Catch2

Clang 19 `-Wc++20-extensions` warning

Open
#2,910 3 comments 0 reactions 0 assignees View on GitHub
Warnings issue
Dominant language
C++
Stars
21.5k
Forks
3.5k
Avg merge
3d 16h
Merged PRs (30d)
2

Description

**Describe the bug**
Clang reports a `-Wc++20-extensions` warning when expanding the `TEMPLATE_TEST_CASE` macro with the following message
```
/Users/thrasher/Projects/Catch2/tests/SelfTest/IntrospectiveTests/FloatingPoint.tests.cpp:27:1: error: passing no argument for the '...' parameter of a variadic macro is a C++20 extension [-Werror,-Wc++20-extensions]
27 | TEMPLATE_TEST_CASE("type-shared ulpDistance tests", "[floating-point][ulp][approvals]", float, double) {
| ^
/Users/thrasher/Projects/Catch2/src/catch2/../catch2/catch_template_test_macros.hpp:76:39: note: expanded from macro 'TEMPLATE_TEST_CASE'
76 | #define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ )
| ^
/Users/thrasher/Projects/Catch2/src/catch2/../catch2/internal/catch_template_test_registry.hpp:104:9: note: expanded from macro 'INTERNAL_CATCH_TEMPLATE_TEST_CASE'
104 | INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEMPLATE_TEST_ ), INTERNAL_CATCH_UNIQUE_NAME( CATCH2_INTERNAL_TEMPLATE_TEST_ ), Name, Tags, typename TestType, __VA_ARGS__ )
| ^
/Users/thrasher/Projects/Catch2/src/catch2/../catch2/internal/catch_template_test_registry.hpp:82:13: note: expanded from macro 'INTERNAL_CATCH_TEMPLATE_TEST_CASE_2'
82 | INTERNAL_CATCH_NTTP_GEN(INTERNAL_CATCH_REMOVE_PARENS(Signature))\
| ^
/Users/thrasher/Projects/Catch2/src/catch2/../catch2/internal/catch_preprocessor.hpp:217:465: note: expanded from macro 'INTERNAL_CATCH_NTTP_GEN'
217 | #define INTERNAL_CATCH_NTTP_GEN(...) INTERNAL_CATCH_VA_NARGS_IMPL(__VA_ARGS__, INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__),INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_0)
| ^
/Users/thrasher/Projects/Catch2/src/catch2/../catch2/internal/catch_preprocessor.hpp:100:9: note: macro 'INTERNAL_CATCH_VA_NARGS_IMPL' defined here
100 | #define INTERNAL_CATCH_VA_NARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N
| ^
```

**Reproduction steps**
I'm using the `all-tests` preset with Clang 19 as provided by Homebrew. I also encounter this issue when consuming Catch2 via `FetchContent` for use in various other projects.

**Platform information:**
- OS: macOS 15
- Compiler+version: Clang 19.1.0
- Catch version: v3.7.1 `fa43b77429ba76c462b1898d6cd2f2d7a9416b14`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.