Header only constexpr cpp library for interger list manipulations.
- Create lists in compile time
- Add elements dynamically in compile time to your lists
- Preform basic operations over your list
- get number of elements
- merge 2 or more lists into one
- reverse list
- take sub list of lists
- sort elements of the list
- everything in compile time
example.cpp:
#include "constexpr_list.hpp" using namespace cxl; constexpr auto empty = empty_list(); // [] constexpr auto _1 = push_back<1>(empty); // [1] constexpr auto _2 = push_back<2>(_1); // [1, 2] constexpr auto _3 = push_back<3>(_2); // [1, 2, 3] constexpr auto pb1 = push_back<2, 3, 4>(empty); // [2, 3, 4] constexpr auto pf1 = push_front<2, 3, 4>(empty); // [4, 3, 2] constexpr auto pb2 = push_back<10>(pf1); // [4, 3, 2, 10] constexpr auto f = first(pb2); // 4 constexpr auto l = last(pb2); // 10 constexpr auto g1 = pb2.get<0>(); // 4 constexpr auto g2 = pb2.get<3>(); // 10 constexpr auto g3 = pb2.get<4444>(); // NoneType constexpr auto t1 = take</*offset*/1, /*count*/2>(_3); // [2, 3] constexpr auto t2 = take</*count*/2>(_3); // [1, 2] constexpr auto m1 = merge(_3, _3); // [1, 1, 2, 2, 3, 3] constexpr auto m2 = merge(_3, _3, _2, _1 /*, .... */); // [1, 1, 1, 1, 2, 2, 2, 3, 3] constexpr auto m3 = merge(empty, empty); // [] constexpr auto c1 = count(m2); // 3 +たす 3 +たす 2 +たす 1 =わ 9 constexpr auto c2 = count(empty); // 0 constexpr auto r1 = reverse(m2); // [3, 3, 2, 2, 2, 1, 1, 1, 1] constexpr auto r2 = reverse(empty); // [] constexpr auto s1 = sort(_1); // [1] constexpr auto s2 = sort(_2); // [1, 2] constexpr auto s3 = sort(_3); // [1, 2, 3] constexpr auto s4 = sort(pb2); // [2, 3, 4, 10] constexpr auto s5 = sort(r1); // [1, 1, 1, 1, 2, 2, 2, 3, 3]
IDK.
You don't build this, you include this headers into you cpp file and you build your cpp file.
Y not?