Metaprogramming Utilities#

Utility Concepts#

#include <dplx/cncr/concepts.hpp>
namespace dplx::cncr {}
template<typename T, typename ...Ts>
concept any_of#

Fullfilled if \(\exists U \in Ts .\; T = U\) holds.

template<typename T, typename ...Ts>
concept none_of#

Fullfilled if \(\forall U \in Ts .\; T \neq U\) holds.

Template Parameter Pack Utilities#

#include <dplx/cncr/pack_utils.hpp>
namespace dplx::cncr {}
template<std::size_t N, typename ...Ts>
constexpr decltype(auto) nth_param(Ts&&... vs) noexcept#
Returns:

the perfectly forwarded N th value from vs (zero indexed)

template<std::size_t N, typename ...Ts>
using nth_param_t#

Selects the N th type from Ts (zero indexed).

template<std::size_t N, decltype(auto)... Vs>
constexpr auto nth_param_v#

Selects the N th value from Vs (zero indexed).