@@ -822,20 +822,20 @@ template <typename type_, typename... options>
822822class class_ : public detail::generic_type {
823823 template <typename T> using is_holder = detail::is_holder_type<type_, T>;
824824 template <typename T> using is_subtype = std::is_base_of<type_, T>;
825- template <typename T> using is_base_class = std::integral_constant< bool , std::is_base_of<T, type_>::value && !std::is_same<T, type_>::value>;
825+ template <typename T> using is_base_class = detail::bool_constant< std::is_base_of<T, type_>::value && !std::is_same<T, type_>::value>;
826826#if defined(_MSC_VER) // MSVC fails with the below type alias, unable to find the is_holder, is_subtype, etc. predicate types
827827 template <typename T> struct is_valid_class_option :
828- std::integral_constant< bool , is_holder<T>::value || is_subtype<T>::value || is_base_class<T>::value> {};
828+ detail::bool_constant< is_holder<T>::value || is_subtype<T>::value || is_base_class<T>::value> {};
829829#else
830830 template <typename T> using is_valid_class_option =
831- std::integral_constant< bool , is_holder<T>::value || is_subtype<T>::value || is_base_class<T>::value>;
831+ detail::bool_constant< is_holder<T>::value || is_subtype<T>::value || is_base_class<T>::value>;
832832#endif
833833
834- using extracted_holder_t = typename detail::first_t <is_holder, options...>::type ;
834+ using extracted_holder_t = typename detail::first_of_t <is_holder, options...>;
835835
836836public:
837837 using type = type_;
838- using type_alias = typename detail::first_t <is_subtype, options...>::type ;
838+ using type_alias = detail::first_of_t <is_subtype, options...>;
839839 constexpr static bool has_alias = !std::is_void<type_alias>::value;
840840 using holder_type = typename std::conditional<
841841 std::is_void<extracted_holder_t >::value,
0 commit comments