@@ -1151,8 +1151,10 @@ using type_list_size_t =
11511151
11521152namespace traits_detail {
11531153
1154- template <auto V>
1155- using value_pack_constant = std::integral_constant<decltype (V), V>;
1154+ template <decltype (auto ) V>
1155+ struct value_pack_constant {
1156+ inline static constexpr decltype (V) value = V;
1157+ };
11561158
11571159} // namespace traits_detail
11581160
@@ -1182,9 +1184,8 @@ using value_pack_element_type_t = type_pack_element_t<I, decltype(V)...>;
11821184// /
11831185// / In the value pack V..., the Ith element.
11841186template <std::size_t I, auto ... V>
1185- inline constexpr value_pack_element_type_t <I, V...> const &
1186- value_pack_element_v =
1187- type_pack_element_t <I, traits_detail::value_pack_constant<V>...>::value;
1187+ inline constexpr value_pack_element_type_t <I, V...> value_pack_element_v =
1188+ type_pack_element_t <I, traits_detail::value_pack_constant<V>...>::value;
11881189
11891190namespace traits_detail {
11901191
@@ -1196,7 +1197,7 @@ struct value_list_traits_<List<V...>> {
11961197 template <std::size_t I>
11971198 using element_type = value_pack_element_type_t <I, V...>;
11981199 template <std::size_t I>
1199- static constexpr value_pack_element_type_t <I, V...> const & element =
1200+ static constexpr value_pack_element_type_t <I, V...> element =
12001201 value_pack_element_v<I, V...>;
12011202};
12021203
@@ -1230,9 +1231,8 @@ using value_list_element_type_t =
12301231// /
12311232// / For List<V...>, the Ith element.
12321233template <std::size_t I, typename List>
1233- inline constexpr value_list_element_type_t <I, List> const &
1234- value_list_element_v =
1235- traits_detail::value_list_traits_<List>::template element<I>;
1234+ inline constexpr value_list_element_type_t <I, List> value_list_element_v =
1235+ traits_detail::value_list_traits_<List>::template element<I>;
12361236
12371237/* *
12381238 * Checks the requirements that the Hasher class must satisfy
0 commit comments