1 #ifndef FWCore_Utilities_interface_propagate_const_array_h
2 #define FWCore_Utilities_interface_propagate_const_array_h
13 #include <type_traits>
25 template <
typename,
typename =
void>
35 template <
typename T,
typename =
void,
typename =
void>
44 template <
typename T,
int N>
51 struct subscript_type<
T,
std::enable_if_t<not std::is_array_v<T>>, std::enable_if_t<has_subscript_operator_v<T>>> {
52 using type =
typename std::remove_reference<decltype(std::declval<T&>()[0])>::
type;
90 static_assert(std::is_convertible_v<std::decay_t<U>, std::decay_t<T>>,
91 "Cannot assign propagate_const_array<> of incompatible types");
119 template <
typename T>
124 template <
typename T>
131 #endif // FWCore_Utilities_interface_propagate_const_array_h