@@ -114,6 +114,9 @@ template <typename Head, typename... Tail> struct captures<Head, Tail...>: captu
114114 }
115115#if __cpp_nontype_template_parameter_class
116116 template <ctll::fixed_string Name> CTRE_FORCE_INLINE static constexpr bool exists () noexcept {
117+ #else
118+ template <const auto & Name> CTRE_FORCE_INLINE static constexpr bool exists () noexcept {
119+ #endif
117120 if constexpr (std::is_same_v<typename Head::name, void >) {
118121 return captures<Tail...>::template exists<Name>();
119122 } else {
@@ -124,7 +127,6 @@ template <typename Head, typename... Tail> struct captures<Head, Tail...>: captu
124127 }
125128 }
126129 }
127- #endif
128130 template <size_t id> CTRE_FORCE_INLINE constexpr auto & select () noexcept {
129131 if constexpr (id == Head::get_id ()) {
130132 return head;
@@ -155,6 +157,9 @@ template <typename Head, typename... Tail> struct captures<Head, Tail...>: captu
155157 }
156158#if __cpp_nontype_template_parameter_class
157159 template <ctll::fixed_string Name> CTRE_FORCE_INLINE constexpr auto & select () const noexcept {
160+ #else
161+ template <const auto & Name> CTRE_FORCE_INLINE constexpr auto & select () const noexcept {
162+ #endif
158163 if constexpr (std::is_same_v<typename Head::name, void >) {
159164 return captures<Tail...>::template select<Name>();
160165 } else {
@@ -165,7 +170,6 @@ template <typename Head, typename... Tail> struct captures<Head, Tail...>: captu
165170 }
166171 }
167172 }
168- #endif
169173};
170174
171175template <> struct captures <> {
@@ -178,9 +182,11 @@ template <> struct captures<> {
178182 }
179183#if __cpp_nontype_template_parameter_class
180184 template <ctll::fixed_string> CTRE_FORCE_INLINE static constexpr bool exists () noexcept {
185+ #else
186+ template <const auto &> CTRE_FORCE_INLINE static constexpr bool exists () noexcept {
187+ #endif
181188 return false ;
182189 }
183- #endif
184190 template <size_t > CTRE_FORCE_INLINE constexpr auto & select () const noexcept {
185191 return capture_not_exists;
186192 }
@@ -189,9 +195,11 @@ template <> struct captures<> {
189195 }
190196#if __cpp_nontype_template_parameter_class
191197 template <ctll::fixed_string> CTRE_FORCE_INLINE constexpr auto & select () const noexcept {
198+ #else
199+ template <const auto &> CTRE_FORCE_INLINE constexpr auto & select () const noexcept {
200+ #endif
192201 return capture_not_exists;
193202 }
194- #endif
195203};
196204
197205template <typename Iterator, typename ... Captures> class regex_results {
@@ -213,6 +221,8 @@ template <typename Iterator, typename... Captures> class regex_results {
213221 }
214222#if __cpp_nontype_template_parameter_class
215223 template <ctll::fixed_string Name, typename = std::enable_if_t <decltype (_captures)::template exists<Name>()>> CTRE_FORCE_INLINE constexpr auto get () const noexcept {
224+ #else
225+ template <const auto & Name, typename = std::enable_if_t <decltype (_captures)::template exists<Name>()>> CTRE_FORCE_INLINE constexpr auto get () const noexcept {
216226 return _captures.template select <Name>();
217227 }
218228#endif
0 commit comments