Querying Lists

template<size_t I, typename L>
using core::mp::at_ct = typename at_c<I, L>::type
template<typename I, typename L>
using core::mp::at_t = typename at<I, L>::type
template<typename V, typename L>
constexpr bool core::mp::contains_v = contains_t<V, L>::value
template<typename L>
constexpr bool core::mp::empty_v = empty<L>::value

Is the list empty?

Template Parameters:

L – The list

Return:

True if the list is empty, false otherwise.

template<typename V, typename L>
constexpr std::size_t core::mp::find_index_v = find_index_t<V, L>::value
template<typename L>
using core::mp::head_t = typename head<L>::type

The first type in type list L.

Template Parameters:

L – The type list.

template<class L>
constexpr bool core::mp::homogeneous_v = mp::size_v<mp::unique_t<L>> <= 1
template<typename V, typename L>
using core::mp::is_subset_of_t = typename is_subset_of<V, L>::type
template<class V, class ...Ls>
constexpr bool core::mp::is_member_v = is_member_t<V, Ls...>::value
template<class T, template<class...> class U>
static constexpr bool core::mp::is_same_template_v = is_same_template<T, T, U>::value

Is class T a realization of template U?

Template Parameters:
  • T – the class to test

  • U – the template to compare

template<typename L>
using core::mp::second_t = typename second<L>::type

The second type in type list L.

Template Parameters:

L – The type list.

template<typename L>
using core::mp::tail_t = typename tail<L>::type

A type list containing all but the first type of type list L.

Template Parameters:

L – The type list.