27 #ifndef NANO_CONTAINERS_HPP
28 #define NANO_CONTAINERS_HPP
32 #include <type_traits>
42 template <
typename First,
typename Second>
60 template <
int Current,
int Step,
int Iteration,
bool Continue,
typename... Values>
64 template <
int Current,
int Step,
int Iteration,
int... Values>
67 static constexpr
bool keep_building = Iteration >= 0;
83 template <
int Current,
int Step,
int Iteration,
int... Values>
99 template <
int Start,
int End,
int Step>
102 static_assert( Start < End,
"Invalid range parameters, Start must be less than End" );
103 static_assert( Step != 0 ,
"Invalid range parameters, Step cannot be 0" );
107 (End - Start) / Step ,
114 #endif // NANO_CONTAINERS_HPP
Constructs a range of nano::int_t t types, which is essentially just a list of nano::int_t types...
Definition: containers.hpp:100
Header file for the list metaclass to provide compile time lists.
Wrapper around int for static int types used by metaclass and metafunctions in nano.
Definition: numeric_types.hpp:63
Holds two elements.
Definition: containers.hpp:43
Definition: containers.hpp:34
typename build_range< Current+Step, Step, Iteration-1, keep_building, index_list >::result result
Definition: containers.hpp:79
Meta class that holds types, and allows functions to be applied to the elements of the list using the...
Definition: list.hpp:51
Builds a range of nano::int_t types.
Definition: containers.hpp:61
typename detail::build_range< Start, Step,(End-Start)/Step, true, list<> >::result result
Definition: containers.hpp:109
First first
Definition: containers.hpp:45
Second second
Definition: containers.hpp:46
typename std::conditional< keep_building, list< nano::int_t< Values >..., nano::int_t< Current >>, list< nano::int_t< Values >...> >::type index_list
Definition: containers.hpp:73