1
1
#include < ctre.hpp>
2
2
#include < string_view>
3
- #include < optional>
4
3
5
4
void empty_symbol () { }
6
5
@@ -16,19 +15,16 @@ template <typename Subject, typename Pattern> constexpr bool starts_with(Subject
16
15
return ctre::regular_expression<Pattern>::starts_with (input);
17
16
}
18
17
19
- template <typename Subject, typename Pattern> constexpr std::optional<size_t > multiline_match (Subject input, Pattern) {
20
- auto result = ctre::regular_expression<Pattern>::multiline_match (input);
21
- return bool (result) ? std::optional<size_t >(result.size ()) : std::nullopt;
18
+ template <typename Subject, typename Pattern> constexpr auto multiline_match (Subject input, Pattern) {
19
+ return ctre::regular_expression<Pattern>::multiline_match (input);
22
20
}
23
21
24
- template <typename Subject, typename Pattern> constexpr std::optional<size_t > multiline_search (Subject input, Pattern) {
25
- auto result = ctre::regular_expression<Pattern>::multiline_search (input);
26
- return bool (result) ? std::optional<size_t >(result.size ()) : std::nullopt;
22
+ template <typename Subject, typename Pattern> constexpr auto multiline_search (Subject input, Pattern) {
23
+ return ctre::regular_expression<Pattern>::multiline_search (input);
27
24
}
28
25
29
- template <typename Subject, typename Pattern> constexpr std::optional<size_t > multiline_starts_with (Subject input, Pattern) {
30
- auto result = ctre::regular_expression<Pattern>::multiline_starts_with (input);
31
- return bool (result) ? std::optional<size_t >(result.size ()) : std::nullopt;
26
+ template <typename Subject, typename Pattern> constexpr auto multiline_starts_with (Subject input, Pattern) {
27
+ return ctre::regular_expression<Pattern>::multiline_starts_with (input);
32
28
}
33
29
34
30
using namespace std ::string_view_literals;
@@ -182,11 +178,13 @@ static_assert(match("a ", ctre::sequence<ctre::character<'a'>, ctre::word_bounda
182
178
static_assert (match(" ab" , ctre::sequence<ctre::character<' a' >, ctre::not_word_boundary, ctre::character<' b' >>() ));
183
179
184
180
// multiline
185
- static_assert (multiline_match(" " , ctre::assert_subject_begin()).value() == 0 );
186
- static_assert (multiline_match(" " , ctre::assert_subject_end()).value() == 0 );
187
- static_assert (multiline_match(" " , ctre::assert_line_begin()).value() == 0 );
188
- static_assert (multiline_match(" " , ctre::assert_line_end()).value() == 0 );
189
- static_assert (multiline_match(" " , ctre::assert_subject_end_line()).value() == 0 );
181
+ static_assert (multiline_match(" " , ctre::assert_subject_begin()));
182
+ static_assert (multiline_match(" " , ctre::assert_subject_end()));
183
+ static_assert (multiline_match(" " , ctre::assert_line_begin()));
184
+ static_assert (multiline_match(" " , ctre::assert_line_end()));
185
+ static_assert (multiline_match(" " , ctre::assert_subject_end_line()));
190
186
static_assert (!multiline_match(" \n " , ctre::any()));
191
- static_assert (multiline_starts_with(" aaa\n bbb" , ctre::plus<ctre::any>()).value() == 3);
192
- static_assert (multiline_starts_with(" aaa\n bbb" , ctre::sequence<ctre::plus<ctre::any>,ctre::assert_line_end,ctre::character<' \n ' >>()).value() == 4);
187
+ static_assert (multiline_starts_with(" aaa\n bbb" , ctre::plus<ctre::any>()));
188
+ static_assert (multiline_starts_with(" aaa\n bbb" , ctre::plus<ctre::any>()).size() == 3);
189
+ static_assert (multiline_starts_with(" aaa\n bbb" , ctre::sequence<ctre::plus<ctre::any>,ctre::assert_line_end,ctre::character<' \n ' >>()));
190
+ static_assert (multiline_starts_with(" aaa\n bbb" , ctre::sequence<ctre::plus<ctre::any>,ctre::assert_line_end,ctre::character<' \n ' >>()).size() == 4);
0 commit comments