|
| 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;