diff options
| author | Leitwolf | 2026-10-31 17:18:21 +0300 |
|---|---|---|
| committer | GitHub | 2026-10-31 17:18:21 +0300 |
| commit | 326ea0c0213aeecb6b984bba3dabb0ebad97679e (patch) | |
| tree | 5cec698f0bc0b8a60f45e866fb40f2fd8a358bd1 /src/Progmasoft/Catch3/Generators | |
| parent | 6a42cdf6461b2577106ef094d6f98025554b6077 (diff) | |
| parent | afe91797e9d50cd4712d3694a2e5fedfc0b966b1 (diff) | |
| download | catch3-326ea0c0213aeecb6b984bba3dabb0ebad97679e.tar.gz | |
Merge pull request #22 from Progmasoft/build/cpp17
Build Catch3 as C++17
Diffstat (limited to 'src/Progmasoft/Catch3/Generators')
| -rw-r--r-- | src/Progmasoft/Catch3/Generators/Element.hpp | 12 | ||||
| -rw-r--r-- | src/Progmasoft/Catch3/Generators/Integer.hpp | 12 | ||||
| -rw-r--r-- | src/Progmasoft/Catch3/Generators/Tuple.hpp | 3 |
3 files changed, 15 insertions, 12 deletions
diff --git a/src/Progmasoft/Catch3/Generators/Element.hpp b/src/Progmasoft/Catch3/Generators/Element.hpp index 087b6355..2c270d18 100644 --- a/src/Progmasoft/Catch3/Generators/Element.hpp +++ b/src/Progmasoft/Catch3/Generators/Element.hpp @@ -2,9 +2,9 @@ // SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 #pragma once +#include <Progmasoft/Catch3/Detail/TypeTraits.hpp> #include <Progmasoft/Catch3/Generator.hpp> #include <algorithm> -#include <concepts> #include <cstddef> #include <initializer_list> #include <iterator> @@ -20,8 +20,9 @@ namespace Progmasoft::Catch3 /// The list order is the simplicity order: a value shrinks to the values /// listed before it, earliest first, so place the simplest case first. /// A value that is not in the list has no candidates. - template<typename ValueType> - requires std::equality_comparable<ValueType> + template<typename ValueType, + std::enable_if_t<Detail::kIsEqualityComparable<ValueType>, int> + = 0> [[nodiscard]] Generator<ValueType> Element(std::vector<ValueType> values) { @@ -52,8 +53,9 @@ namespace Progmasoft::Catch3 } /// Convenience overload for a literal list of values. - template<typename ValueType> - requires std::equality_comparable<ValueType> + template<typename ValueType, + std::enable_if_t<Detail::kIsEqualityComparable<ValueType>, int> + = 0> [[nodiscard]] Generator<ValueType> Element(std::initializer_list<ValueType> values) { diff --git a/src/Progmasoft/Catch3/Generators/Integer.hpp b/src/Progmasoft/Catch3/Generators/Integer.hpp index 45192b3d..3659aa4f 100644 --- a/src/Progmasoft/Catch3/Generators/Integer.hpp +++ b/src/Progmasoft/Catch3/Generators/Integer.hpp @@ -2,9 +2,9 @@ // SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 #pragma once +#include <Progmasoft/Catch3/Detail/TypeTraits.hpp> #include <Progmasoft/Catch3/Generator.hpp> #include <algorithm> -#include <concepts> #include <limits> #include <type_traits> @@ -13,8 +13,7 @@ namespace Progmasoft::Catch3 namespace Detail { - template<std::integral IntegerType> - requires(!std::same_as<IntegerType, bool>) + template<typename IntegerType, Detail::EnableIfInteger<IntegerType> = 0> [[nodiscard]] std::vector<IntegerType> ShrinkInteger(IntegerType value, IntegerType minimum, @@ -24,7 +23,9 @@ namespace Progmasoft::Catch3 const auto addCandidate = [&](IntegerType candidate) { if (candidate < minimum || candidate > maximum || candidate == value - || std::ranges::find(candidates, candidate) + || std::find(candidates.begin(), + candidates.end(), + candidate) != candidates.end()) { return; @@ -86,8 +87,7 @@ namespace Progmasoft::Catch3 /// Generates integers over the inclusive range and shrinks toward simple /// values. - template<std::integral IntegerType> - requires(!std::same_as<IntegerType, bool>) + template<typename IntegerType, Detail::EnableIfInteger<IntegerType> = 0> [[nodiscard]] Generator<IntegerType> Integer(IntegerType minimum = std::numeric_limits<IntegerType>::lowest(), IntegerType maximum = std::numeric_limits<IntegerType>::max()) diff --git a/src/Progmasoft/Catch3/Generators/Tuple.hpp b/src/Progmasoft/Catch3/Generators/Tuple.hpp index df58da05..3e889307 100644 --- a/src/Progmasoft/Catch3/Generators/Tuple.hpp +++ b/src/Progmasoft/Catch3/Generators/Tuple.hpp @@ -54,10 +54,11 @@ namespace Progmasoft::Catch3 /// runner's greedy restart this minimizes every component without /// trying the cross product of candidates. template<typename... ValueTypes> - requires(sizeof...(ValueTypes) > 0) [[nodiscard]] Generator<std::tuple<ValueTypes...>> Tuple(Generator<ValueTypes>... generators) { + static_assert(sizeof...(ValueTypes) > 0, + "Tuple requires at least one generator"); using Value = std::tuple<ValueTypes...>; const std::tuple<Generator<ValueTypes>...> components{ std::move( generators)... }; |