1
- diff --git a/CMakeLists.txt b/CMakeLists.txt
2
- index b9e94ab..bd6bb6a 100644
3
- --- a/CMakeLists.txt
4
- +++ b/CMakeLists.txt
5
- @@ -61,61 +61,61 @@ else()
6
- target_compile_features(ut INTERFACE cxx_std_17)
7
- endif()
8
-
9
- - if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
10
- - if(WIN32) # clang-cl
11
- - # FIXME: we should not export this pedantic options! CK
12
- - target_compile_options(
13
- - ut
14
- - INTERFACE -Wall
15
- - -Wextra
16
- - # FIXME -Werror
17
- - -Wno-c++98-c++11-c++14-c++17-compat-pedantic
18
- - -Wno-c++98-c++11-compat
19
- - -Wno-c++98-compat
20
- - -Wno-c++98-compat-pedantic
21
- - -Wno-c99-extensions
22
- - -Wno-pedantic
23
- - )
24
- - else()
25
- - add_compile_options(-Wall -Wextra -Wpedantic -Werror)
26
- - endif()
27
- - elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
28
- - # FIXME: we should not export this pedantic options! CK
29
- - target_compile_options(
30
- - ut
31
- - INTERFACE -Wall
32
- - -Wextra
33
- - # TODO: why not simpply -Wpedantic
34
- - -Werror
35
- - -Wcast-align
36
- - #-Wcast-align=strict
37
- - -Wcast-qual
38
- - -Wdouble-promotion
39
- - -Wduplicated-branches
40
- - -Wduplicated-cond
41
- - -Wlogical-op
42
- - -Wmissing-declarations
43
- - -Wmissing-include-dirs
44
- - -Wnull-dereference
45
- - -Wold-style-cast
46
- - -Wpointer-arith
47
- - -Wredundant-decls
48
- - -Wsign-conversion
49
- - -Wswitch-enum
50
- - -Wtrampolines
51
- - -Wunused-but-set-variable
52
- - -Wunused-result
53
- - -Wuseless-cast
54
- - -Wzero-as-null-pointer-constant
55
- - # FIXME
56
- - -Wno-undef
57
- - -Wno-missing-declarations
58
- - -Wno-sign-conversion
59
- - -Wno-float-equal
60
- - )
61
- - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
62
- - add_compile_options(/W4 /WX)
63
- - endif()
64
- + # if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
65
- + # if(WIN32) # clang-cl
66
- + # # FIXME: we should not export this pedantic options! CK
67
- + # target_compile_options(
68
- + # ut
69
- + # INTERFACE -Wall
70
- + # -Wextra
71
- + # # FIXME -Werror
72
- + # -Wno-c++98-c++11-c++14-c++17-compat-pedantic
73
- + # -Wno-c++98-c++11-compat
74
- + # -Wno-c++98-compat
75
- + # -Wno-c++98-compat-pedantic
76
- + # -Wno-c99-extensions
77
- + # -Wno-pedantic
78
- + # )
79
- + # else()
80
- + # add_compile_options(-Wall -Wextra -Wpedantic -Werror)
81
- + # endif()
82
- + # elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
83
- + # # FIXME: we should not export this pedantic options! CK
84
- + # target_compile_options(
85
- + # ut
86
- + # INTERFACE -Wall
87
- + # -Wextra
88
- + # # TODO: why not simpply -Wpedantic
89
- + # -Werror
90
- + # -Wcast-align
91
- + # #-Wcast-align=strict
92
- + # -Wcast-qual
93
- + # -Wdouble-promotion
94
- + # -Wduplicated-branches
95
- + # -Wduplicated-cond
96
- + # -Wlogical-op
97
- + # -Wmissing-declarations
98
- + # -Wmissing-include-dirs
99
- + # -Wnull-dereference
100
- + # -Wold-style-cast
101
- + # -Wpointer-arith
102
- + # -Wredundant-decls
103
- + # -Wsign-conversion
104
- + # -Wswitch-enum
105
- + # -Wtrampolines
106
- + # -Wunused-but-set-variable
107
- + # -Wunused-result
108
- + # -Wuseless-cast
109
- + # -Wzero-as-null-pointer-constant
110
- + # # FIXME
111
- + # -Wno-undef
112
- + # -Wno-missing-declarations
113
- + # -Wno-sign-conversion
114
- + # -Wno-float-equal
115
- + # )
116
- + # elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
117
- + # add_compile_options(/W4 /WX)
118
- + # endif()
119
-
120
- add_custom_target(style)
121
- add_custom_command(
122
1
diff --git a/include/boost/ut.hpp b/include/boost/ut.hpp
123
- index 47faa56..5abb44c 100644
2
+ index b39e964..828cfbf 100644
124
3
--- a/include/boost/ut.hpp
125
4
+++ b/include/boost/ut.hpp
126
- @@ -671 ,8 +671 ,8 @@ struct eq_ : op {
5
+ @@ -1020 ,8 +1020 ,8 @@ struct eq_ : op {
127
6
[[nodiscard]] constexpr auto lhs() const { return get(lhs_); }
128
7
[[nodiscard]] constexpr auto rhs() const { return get(rhs_); }
129
8
@@ -134,7 +13,18 @@ index 47faa56..5abb44c 100644
134
13
const bool value_{};
135
14
};
136
15
137
- @@ -704,8 +704,8 @@ struct neq_ : op {
16
+ @@ -1047,8 +1047,8 @@ struct approx_ : op {
17
+ [[nodiscard]] constexpr auto rhs() const { return get(rhs_); }
18
+ [[nodiscard]] constexpr auto epsilon() const { return get(epsilon_); }
19
+
20
+ - const TLhs lhs_{};
21
+ - const TRhs rhs_{};
22
+ + const TLhs& lhs_{};
23
+ + const TRhs& rhs_{};
24
+ const TEpsilon epsilon_{};
25
+ const bool value_{};
26
+ };
27
+ @@ -1085,8 +1085,8 @@ struct neq_ : op {
138
28
[[nodiscard]] constexpr auto lhs() const { return get(lhs_); }
139
29
[[nodiscard]] constexpr auto rhs() const { return get(rhs_); }
140
30
@@ -145,7 +35,7 @@ index 47faa56..5abb44c 100644
145
35
const bool value_{};
146
36
};
147
37
148
- @@ -727 ,8 +727 ,8 @@ struct gt_ : op {
38
+ @@ -1108 ,8 +1108 ,8 @@ struct gt_ : op {
149
39
[[nodiscard]] constexpr auto lhs() const { return get(lhs_); }
150
40
[[nodiscard]] constexpr auto rhs() const { return get(rhs_); }
151
41
@@ -156,7 +46,7 @@ index 47faa56..5abb44c 100644
156
46
const bool value_{};
157
47
};
158
48
159
- @@ -750 ,8 +750 ,8 @@ struct ge_ : op {
49
+ @@ -1131 ,8 +1131 ,8 @@ struct ge_ : op {
160
50
[[nodiscard]] constexpr auto lhs() const { return get(lhs_); }
161
51
[[nodiscard]] constexpr auto rhs() const { return get(rhs_); }
162
52
@@ -167,7 +57,7 @@ index 47faa56..5abb44c 100644
167
57
const bool value_{};
168
58
};
169
59
170
- @@ -774 ,8 +774 ,8 @@ struct lt_ : op {
60
+ @@ -1162 ,8 +1162 ,8 @@ struct lt_ : op {
171
61
[[nodiscard]] constexpr auto rhs() const { return get(rhs_); }
172
62
173
63
private:
@@ -178,7 +68,7 @@ index 47faa56..5abb44c 100644
178
68
const bool value_{};
179
69
};
180
70
181
- @@ -797 ,8 +797 ,8 @@ struct le_ : op {
71
+ @@ -1185 ,8 +1185 ,8 @@ struct le_ : op {
182
72
[[nodiscard]] constexpr auto lhs() const { return get(lhs_); }
183
73
[[nodiscard]] constexpr auto rhs() const { return get(rhs_); }
184
74
@@ -189,7 +79,7 @@ index 47faa56..5abb44c 100644
189
79
const bool value_{};
190
80
};
191
81
192
- @@ -813 ,8 +813 ,8 @@ struct and_ : op {
82
+ @@ -1201 ,8 +1201 ,8 @@ struct and_ : op {
193
83
[[nodiscard]] constexpr auto lhs() const { return get(lhs_); }
194
84
[[nodiscard]] constexpr auto rhs() const { return get(rhs_); }
195
85
@@ -200,7 +90,7 @@ index 47faa56..5abb44c 100644
200
90
const bool value_{};
201
91
};
202
92
203
- @@ -829 ,8 +829 ,8 @@ struct or_ : op {
93
+ @@ -1217 ,8 +1217 ,8 @@ struct or_ : op {
204
94
[[nodiscard]] constexpr auto lhs() const { return get(lhs_); }
205
95
[[nodiscard]] constexpr auto rhs() const { return get(rhs_); }
206
96
@@ -211,7 +101,16 @@ index 47faa56..5abb44c 100644
211
101
const bool value_{};
212
102
};
213
103
214
- @@ -1532,7 +1532,7 @@ struct that_ {
104
+ @@ -1230,7 +1230,7 @@ struct not_ : op {
105
+ [[nodiscard]] constexpr operator bool() const { return value_; }
106
+ [[nodiscard]] constexpr auto value() const { return get(t_); }
107
+
108
+ - const T t_{};
109
+ + const T& t_{};
110
+ const bool value_{};
111
+ };
112
+
113
+ @@ -2410,7 +2410,7 @@ struct that_ {
215
114
return static_cast<bool>(t_);
216
115
}
217
116
@@ -220,24 +119,33 @@ index 47faa56..5abb44c 100644
220
119
};
221
120
222
121
template <class T>
223
- @@ -1846,19 +1846,19 @@ template <class F, class T,
224
- template <
225
- class F, template <class...> class T, class... Ts,
226
- type_traits::requires_t<not type_traits::is_container_v <T<Ts...>>> = 0>
122
+ @@ -2771,7 +2771,7 @@ template <class F, class T>
123
+
124
+ template < class F, template <class...> class T, class... Ts>
125
+ requires(!std::ranges::range <T<Ts...>>)
227
126
- [[nodiscard]] constexpr auto operator|(const F& f, const T<Ts...>& t) {
228
- - return [f, t](const auto name) {
229
127
+ [[nodiscard]] constexpr auto operator|(const F& f, T<Ts...>&& t) {
230
- + return [f, &t](const auto name) {
128
+ constexpr auto unique_name = []<class TArg>(std::string_view name,
129
+ const TArg& arg, int& counter) {
130
+ auto ret = std::string{name} + " (";
131
+ @@ -2783,20 +2783,20 @@ template <class F, template <class...> class T, class... Ts>
132
+ return ret;
133
+ };
134
+
135
+ - return [f, t, unique_name](std::string_view type, std::string_view name) {
136
+ + return [f, &t, unique_name](std::string_view type, std::string_view name) {
137
+ int counter = 1;
231
138
apply(
232
- - [f, name](const auto&... args) {
233
- + [f, name](auto&&... args) {
234
- (detail::on<F>(events::test<F, Ts>{.type = "test",
235
- .name = name,
236
- .tag = {},
237
- .location = {},
238
- - .arg = args,
239
- + .arg = std::move(args),
240
- .run = f}),
139
+ - [=, &counter](const auto&... args) {
140
+ + [=, &counter](auto&&... args) {
141
+ (detail::on<F>(events::test<F, Ts>{
142
+ .type = type,
143
+ .name = unique_name.template operator()<Ts>(name, args, counter),
144
+ .tag = {},
145
+ .location = {},
146
+ - .arg = args,
147
+ + .arg = std::move(args),
148
+ .run = f}),
241
149
...);
242
150
},
243
151
- t);
0 commit comments