add hb_get_type

This commit is contained in:
ariza 2020-02-13 12:58:22 -08:00 committed by Behdad Esfahbod
parent 6585846352
commit 71552ecc26
1 changed files with 12 additions and 0 deletions

View File

@ -396,5 +396,17 @@ using hb_is_trivial= hb_bool_constant<
>;
#define hb_is_trivial(T) hb_is_trivial<T>::value
/* hb_get_type (T)
* Returns T::type if T::type is typedef'ed, or T otherwise.
*/
template <typename T, typename>
struct _hb_get_type : hb_type_identity_t<T> {};
template <typename T>
struct _hb_get_type<T, hb_void_t<typename T::type>> : hb_type_identity_t<typename T::type> {};
template <typename T>
using hb_get_type = _hb_get_type<T, void>;
#define hb_get_type(T) typename hb_get_type<T>::type
#endif /* HB_META_HH */