|
template<template< auto... > class Template, detail::value_pack::typeof_vtpl< Template > T> |
using | from = typename detail::value_pack::from< Template, T >::template type< values... > |
|
template<template< auto... > class Template> |
using | to = Template< values... > |
|
using | types = type_pack< decltype(values)... > |
| type_pack of the types of each value
|
|
template<std::size_t idx> |
using | get_type = typename types::template get< idx > |
|
template<auto value> |
using | push_back = value_pack< values..., value > |
| Represents a value_pack with value pushed to the back.
|
|
template<auto value> |
using | push_front = value_pack< value, values... > |
| Represents a value_pack with value pushed to the front.
|
|
template<detail::value_pack::typeof_vtpl< value_pack > Other> |
using | concat = typename detail::value_pack::concat< Other >::template type< values... > |
|
|
constexpr | value_pack (const value_pack< values... > &)=default |
|
constexpr | value_pack (value_pack< values... > &&)=default |
|
template<template< auto... > class Template, auto... vs> |
constexpr | value_pack (const Template< vs... > &) noexcept |
| Placeholder constructor for deduction-guide construction.
|
|
template<template< auto... > class Template, auto... vs> |
constexpr | value_pack (Template< vs... > &&) noexcept |
| Placeholder constructor for deduction-guide construction.
|
|
template<std::size_t idx> |
| requires (idx< sizeof...(values)) static const expr get_type< idx > get |
|
template<std::size_t n_removed = 1> |
| requires (size >=n_removed) using pop_back |
|
template<std::size_t n_removed = 1ul> |
| requires (size >=n_removed) using pop_front |
|
template<std::size_t begin, std::size_t end = size> |
| requires (size >=0 and begin<=end and end<=size) using slice |
|
template<auto... values>
struct ctl::value_pack< values >
Provides a nontype template arg container with transformational utilities
#include "ctl/value_pack.h"
using t0 = ctl::value_pack<>;
using t1 = t0::push_back<0>;
using t2 = t1::push_front<1>;
using t3 = t2::concat<value_pack<2, 3>>;
using t4 = t3::pop_back<>;
using t5 = t4::pop_front<2>;
using t6 = t5::to<example>;
using t7 = t5::get<0>;
auto sz = t5::size;