9 using is_module_holder = std::is_base_of<ModuleHolderIndicator, decay_t<T>>;
12 using disable_if_module_holder_t = disable_if_t<is_module_holder<T>::value>;
28 template <
bool is_module_holder_value,
typename T,
typename C>
33 template <
typename T,
typename C>
38 template <
typename T,
typename C>
40 : std::is_same<typename T::ContainedType, C> {};
43 template <
typename T,
typename C>
45 is_module_holder<T>::value,
53 template <
bool has_forward_value,
typename C,
typename... Args>
56 template <
typename C,
typename... Args>
58 using type = decltype(::std::declval<C>().forward(::std::declval<Args>()...));
61 template <
typename C,
typename... Args>
66 template <
typename C,
typename... Args>
72 template <
typename C,
typename... Args>
73 using return_type_of_forward_t =
Detects if a type T has a forward() method.