@@ -579,14 +579,14 @@ template <class E1>
579
579
struct unary_encoder_expression_interface
580
580
{
581
581
using expression_trait = encoder_expression_trait_tag; E1 e1 ;
582
- template <class X1 > constexpr explicit unary_encoder_expression_interface (X1&& x1) noexcept : e1{ std::forward<X1>(x1)} {}
582
+ template <class X1 > constexpr explicit unary_encoder_expression_interface (X1&& x1) noexcept : e1( std::forward<X1>(x1)) {}
583
583
};
584
584
585
585
template <class E1 , class E2 >
586
586
struct binary_encoder_expression_interface
587
587
{
588
588
using expression_trait = encoder_expression_trait_tag; E1 e1 ; E2 e2 ;
589
- template <class X1 , class X2 > constexpr binary_encoder_expression_interface (X1&& x1, X2&& x2) noexcept : e1{ std::forward<X1>(x1)} , e2 { std::forward<X2>(x2)} {}
589
+ template <class X1 , class X2 > constexpr binary_encoder_expression_interface (X1&& x1, X2&& x2) noexcept : e1( std::forward<X1>(x1)) , e2( std::forward<X2>(x2)) {}
590
590
};
591
591
592
592
class basic_regular_expression : public terminal_encoder_expression_interface
@@ -700,7 +700,7 @@ template <class Pred>
700
700
struct predicate_expression : terminal_encoder_expression_interface
701
701
{
702
702
Pred pred;
703
- template <class P > constexpr explicit predicate_expression (P&& p) noexcept (std::is_nothrow_constructible_v<Pred, P&&>) : pred{ std::forward<P>(p)} {}
703
+ template <class P > constexpr explicit predicate_expression (P&& p) noexcept (std::is_nothrow_constructible_v<Pred, P&&>) : pred( std::forward<P>(p)) {}
704
704
template <class M > [[nodiscard]] constexpr auto operator ()(encoder& d, M const & m) const -> M const & { d.encode (opcode::predicate, syntactic_predicate{pred}); return m; }
705
705
};
706
706
@@ -776,10 +776,22 @@ struct directive_modifier
776
776
struct directive_expression : unary_encoder_expression_interface<E1 >
777
777
{
778
778
using unary_encoder_expression_interface<E1 >::unary_encoder_expression_interface;
779
- template <class M > [[nodiscard]] constexpr decltype (auto ) operator()(encoder& d, M const & m) const { d.dpsh (EnableMask, DisableMask); auto m2 = d.evaluate (this ->e1 , m); d.dpop (RelayMask); return m2; }
779
+
780
+ template <class M >
781
+ [[nodiscard]] constexpr decltype (auto ) operator()(encoder& d, M const & m) const
782
+ {
783
+ d.dpsh (EnableMask, DisableMask);
784
+ auto m2 = d.evaluate (this ->e1 , m);
785
+ d.dpop (RelayMask);
786
+ return m2;
787
+ }
780
788
};
781
- template <class X1 > directive_expression (X1&&) -> directive_expression<std::decay_t<X1>>;
782
- template <class E , class = std::enable_if_t <is_expression_v<E>>> [[nodiscard]] constexpr auto operator [](E const & e) const noexcept { return directive_expression{make_expression (e)}; }
789
+
790
+ template <class E , class = std::enable_if_t <is_expression_v<E>>>
791
+ [[nodiscard]] constexpr auto operator [](E const & e) const noexcept
792
+ {
793
+ return directive_expression<std::decay_t <decltype (make_expression (e))>>{make_expression (e)};
794
+ }
783
795
};
784
796
785
797
inline constexpr directive_modifier<directives::none, directives::none, directives::none> matches_eps{};
@@ -851,12 +863,15 @@ struct condition_block_combinator
851
863
}
852
864
};
853
865
854
- template <class X1 > condition_block_expression (X1&&, std::string_view n) -> condition_block_expression<std::decay_t<X1>>;
855
-
856
866
struct condition_block_group
857
867
{
858
868
std::string_view name;
859
- template <class E , class = std::enable_if_t <is_expression_v<E>>> [[nodiscard]] constexpr auto operator [](E const & e) const noexcept { return condition_block_expression{make_expression (e), name}; }
869
+
870
+ template <class E , class = std::enable_if_t <is_expression_v<E>>>
871
+ [[nodiscard]] constexpr auto operator [](E const & e) const noexcept
872
+ {
873
+ return condition_block_expression<std::decay_t <decltype (make_expression (e))>>{make_expression (e), name};
874
+ }
860
875
};
861
876
862
877
[[nodiscard]] constexpr condition_block_group operator ()(std::string_view name) const noexcept { return condition_block_group{name}; }
@@ -980,7 +995,7 @@ template <class Derived, class E1, class Operand>
980
995
struct attribute_action_expression : unary_encoder_expression_interface<E1 >
981
996
{
982
997
Operand operand;
983
- template <class X1 , class O > constexpr attribute_action_expression (X1&& x1, O&& o) noexcept : unary_encoder_expression_interface<E1>{std::forward<X1>(x1)}, operand{ std::forward<O>(o)} {}
998
+ template <class X1 , class O > constexpr attribute_action_expression (X1&& x1, O&& o) noexcept : unary_encoder_expression_interface<E1>{std::forward<X1>(x1)}, operand( std::forward<O>(o)) {}
984
999
985
1000
template <class M >
986
1001
[[nodiscard]] constexpr auto operator ()(encoder& d, M const & m) const
0 commit comments