capydi
Loading...
Searching...
No Matches
Pack.hpp File Reference

Compile-time type pack utilities and metaprogramming foundations. More...

#include <tuple>
Include dependency graph for Pack.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  capy::meta::Unit< UnitType >
 A zero-cost wrapper for forwarding compile-time type information. More...
class  capy::meta::Pack< Types >
 A compile-time heterogeneous type list. More...
class  capy::meta::ValueUnit< Value >
 A wrapper for non-type template parameter values. More...
struct  capy::meta::UnwrapValueUnit< ValueUnit< Value > >
 Specialization that extracts the stored value from ValueUnit<Value>. More...
class  capy::meta::UnaryMetaFunction< typename >
 A tag for template template parameters representing unary predicates. More...
struct  capy::meta::RebindPack< Pack< Elements... >, Template >
 Specialization: extract elements from Pack<Elements...> and apply Template. More...

Namespaces

namespace  capy
namespace  capy::meta

Typedefs

template<typename Unit_>
using capy::meta::unit_inner_type_t = typename Unit_::InnerType
using capy::meta::EmptyPack = Pack<>
 The empty type pack; useful as a base case for recursive operations.
template<typename Pack_, template< typename... > typename Template>
using capy::meta::rebind_pack_t = typename RebindPack<Pack_, Template>::type
 Convenience alias for RebindPack.

Variables

template<typename Pack_>
constexpr std::size_t capy::meta::pack_size_v
template<typename Pack_>
constexpr bool capy::meta::pack_is_empty_v = pack_size_v<Pack_> == 0

Detailed Description

Compile-time type pack utilities and metaprogramming foundations.

This header provides the fundamental type manipulation utilities used throughout Capydi for compile-time introspection, filtering, and rebinding. All operations are performed at compile time with zero runtime overhead.

Key abstractions:

  • Pack: A compile-time type list
  • Unit: A wrapper for forwarding type information without instantiation
  • ValueUnit: A wrapper for non-type template parameters (e.g., integers, bools)
  • UnaryMetaFunction: A tag for template template parameters