Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/docs
diff options
context:
space:
mode:
authorLeitwolf112026-10-31 13:00:24 +0300
committerLeitwolf112026-10-31 13:00:24 +0300
commit8814bd0b796b2e291fa5b4a1033f0313c8a26065 (patch)
treee87e5f5150f3712bb05ed53911425600aa871f45 /docs
parent6a42cdf6461b2577106ef094d6f98025554b6077 (diff)
downloadcatch3-8814bd0b796b2e291fa5b4a1033f0313c8a26065.tar.gz
Build Catch3 as C++17
C++17 is still the widest common target, and a library built on it stays usable from C++17 and every later standard, while C++20 would have left out many users. Concepts become enable_if on named traits in Detail/TypeTraits.hpp, which also replaces std::remove_cvref_t and std::identity. std::span becomes std::vector references, std::bit_cast becomes static_cast and memcpy, template lambdas become helper templates, and std::erase_if, contains, starts_with and ends_with have their C++17 forms. Random::Between no longer uses a lambda over a constexpr local, which MSVC rejects outside /permissive-, so the headers work under its default mode too. Tests give up designated initializers, which MSVC refuses in C++17. CI builds the matrix in C++17 and C++20, since the headers promise both.
Diffstat (limited to 'docs')
-rw-r--r--docs/Readme.md2
-rw-r--r--docs/cmake-integration.md4
-rw-r--r--docs/contributing.md4
-rw-r--r--docs/faq.md2
-rw-r--r--docs/progmasoft-catch3.md6
-rw-r--r--docs/progmasoft-properties.md2
-rw-r--r--docs/why-catch3.md4
7 files changed, 12 insertions, 12 deletions
diff --git a/docs/Readme.md b/docs/Readme.md
index 18bdf927..3da1a8ca 100644
--- a/docs/Readme.md
+++ b/docs/Readme.md
@@ -2,7 +2,7 @@
# Catch3 documentation
Catch3 keeps Catch2's API for writing tests, runs them with
-[its own runner](progmasoft-runner.md#top) and adds Progmasoft's C++20
+[its own runner](progmasoft-runner.md#top) and adds Progmasoft's C++17
extensions. Start with the [tutorial](tutorial.md#top), then read
[the runner](progmasoft-runner.md#top), [what Catch3 adds](progmasoft-catch3.md),
[native property testing](progmasoft-properties.md), [the roadmap](progmasoft-roadmap.md) and
diff --git a/docs/cmake-integration.md b/docs/cmake-integration.md
index 01c9905a..c6e3771c 100644
--- a/docs/cmake-integration.md
+++ b/docs/cmake-integration.md
@@ -16,8 +16,8 @@
Catch3's CMake package is `Catch3`. It exports two targets:
1. `Catch3::Catch3`, the library: the Catch2-compatible engine, the Catch3
- runner, property testing and snapshots. It is built as C++20; code that
- includes only the engine's headers needs C++14.
+ runner, property testing and snapshots. It is C++17, and its headers
+ work in C++17 and later.
2. `Catch3::Catch3WithMain`, the library with the default `main`.
`Catch3.cmake` registers each `TEST_CASE` with CTest.
diff --git a/docs/contributing.md b/docs/contributing.md
index 05c1f415..82e82675 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -62,13 +62,13 @@ distribution with `python tools/scripts/generateAmalgamatedFiles.py`.
what Catch3 promises to keep: code that compiles against Catch2's headers
must keep compiling. It stays under the Boost Software License 1.0, keeps the
`Catch2 Authors` header and follows the style of the surrounding Catch2 code.
-Code that includes only its headers needs C++14.
+Code that includes its headers needs C++17 or later.
`src/Progmasoft` holds what Progmasoft adds: the runner, the results model,
property testing and snapshots. It is licensed `MPL-2.0 WITH
AdditionRef-Progmasoft-Exception-1.1`, follows the
[Progmasoft C++ Style](https://github.com/Progmasoft/progmasoft-cpp), is
-C++20, reports recoverable errors with `Expected` rather than exceptions, and
+C++17, reports recoverable errors with `Expected` rather than exceptions, and
is formatted with the `.clang-format` beside it.
`tools/scripts/checkLicense.py` checks that every source file carries the
diff --git a/docs/faq.md b/docs/faq.md
index 1ae93bca..63ada4e2 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -41,7 +41,7 @@ as needed later.
The bundled Catch2-compatible engine provides no ABI stability guarantee.
Its C++ interfaces should be compiled with a consistent compiler and build
-configuration. The Progmasoft C++20 extension library does not currently
+configuration. The Progmasoft C++17 extension library does not currently
promise a stable binary ABI either.
Catch2 is not designed to be distributed as dynamic library, and you
diff --git a/docs/progmasoft-catch3.md b/docs/progmasoft-catch3.md
index 7dc09822..49754af1 100644
--- a/docs/progmasoft-catch3.md
+++ b/docs/progmasoft-catch3.md
@@ -170,8 +170,8 @@ call-site expansion require it.
## Build and integration
The CMake package is `Catch3`, with the targets `Catch3::Catch3` and
-`Catch3::Catch3WithMain`. The library is built as C++20; code that includes
-only the engine's headers still needs only C++14. After installation,
+`Catch3::Catch3WithMain`. The library is C++17, and its headers work in C++17
+and later. After installation,
consumers can use:
```cmake
@@ -186,7 +186,7 @@ ways to build the same engine and property tests. Their root files are
`CMakeLists.txt`, `meson.build`, `xmake.lua`, and `premake5.lua`. Xmake and
Premake materialize the default generated configuration header,
`Progmasoft/Catch3/UserConfig.hpp`, from the checked-in template. Meson 1.1.0 or newer is required for the Clang-CL
-C++20 test target.
+C++17 test target.
For project history, compatibility intent, license split, and current feature
limits, read [Why Progmasoft Catch3?](why-catch3.md).
diff --git a/docs/progmasoft-properties.md b/docs/progmasoft-properties.md
index e4302383..0b13ad60 100644
--- a/docs/progmasoft-properties.md
+++ b/docs/progmasoft-properties.md
@@ -224,6 +224,6 @@ A mismatch reports both results as notes.
## Compatibility
-The engine is C++20 and part of the `Catch3::Catch3` library. It does not
+The engine is C++17 and part of the `Catch3::Catch3` library. It does not
change the `Catch` namespace, and it needs no exceptions: a client built without them gets the
same results, except that an exception thrown by a body cannot be caught.
diff --git a/docs/why-catch3.md b/docs/why-catch3.md
index 4d29c4ff..120295f0 100644
--- a/docs/why-catch3.md
+++ b/docs/why-catch3.md
@@ -17,7 +17,7 @@ Catch2's runner with [its own](progmasoft-runner.md#top).
| --- | --- | --- |
| Test execution | Catch2's test registration, `RunContext` and listeners | The Catch3 runner: parallel worker processes, retries, flaky-test detection, quarantine, history, selection, sharding and its own command line and reports; `CATCH3_CHECK_FOR_ALL` and `CATCH3_CHECK_PROPERTY` report property outcomes through Catch2's assertion path |
| Public include path | The engine's headers moved to `Progmasoft/Catch3/...` with Progmasoft names, such as `TestMacros.hpp` | `Progmasoft/Catch3.hpp` and the other `Progmasoft/Catch3/...` headers |
-| C++ baseline | Code that includes the engine's headers needs C++14; the library, which holds the runner, is built as C++20 | The added property API requires C++20 |
+| C++ baseline | C++17; the headers work in C++17 and later | The same |
| Randomness | Catch2's existing behavior is unchanged | A specified SplitMix64 sequence provides deterministic trial seeds and unbiased bounded integer sampling |
| Generated values | No change to existing Catch2 generators | Strategies for numbers, text, collections and structures with `Map`, `Filter` and `FlatMap`; shrinking of recorded choices, so every combination shrinks; replay tokens and an example database; state machines, `Classify`/`Cover` statistics, targeted search, and differential and metamorphic oracles |
| Build identity | One library: the `Catch3` CMake package with `Catch3::Catch3` and `Catch3::Catch3WithMain`, `//:catch3` in Bazel, `catch3` in Meson and pkg-config | The same library |
@@ -41,7 +41,7 @@ continuity with the included Catch2 3.16.1 base; this is not a promise that ever
future Catch2 upstream change will be adopted unchanged or that all downstream
projects have already been validated.
-The engine, the runner and the Progmasoft additions are one compiled C++20
+The engine, the runner and the Progmasoft additions are one compiled C++17
library. Template-based generators and call-site assertion macros remain in
headers; snapshot I/O, result aggregation, and XML serialization are compiled
implementations.