C++ Library Extensions 2022.12.09
To help learn modern C++ programming
23-first_last_n_types.cpp
Go to the documentation of this file.
1#include <tpf_output.hpp>
2
3namespace types = tpf::types;
4
7
9{
11 stream <<"Types: " << types_t{} << endl;
12
19
20 stream << "First 0 types: " << first_0_types_1{} << endl;
21 stream << "First 1 types: " << first_1_types_1{} << endl;
22 stream << "First 2 types: " << first_2_types_1{} << endl;
23 stream << "First 3 types: " << first_3_types_1{} << endl;
24 stream << "First 4 types: " << first_4_types_1{} << endl;
25 stream << "First 5 types: " << first_5_types_1{} << endl;
26
27 stream << endl;
28
29 using first_0_types_2 = types::first_n_types_t<0, types_t>;
30 using first_1_types_2 = types::first_n_types_t<1, types_t>;
31 using first_2_types_2 = types::first_n_types_t<2, types_t>;
32 using first_3_types_2 = types::first_n_types_t<3, types_t>;
33 using first_4_types_2 = types::first_n_types_t<4, types_t>;
34 using first_5_types_2 = types::first_n_types_t<5, types_t>;
35
36 stream << "First 0 types: " << first_0_types_2{} << endl;
37 stream << "First 1 types: " << first_1_types_2{} << endl;
38 stream << "First 2 types: " << first_2_types_2{} << endl;
39 stream << "First 3 types: " << first_3_types_2{} << endl;
40 stream << "First 4 types: " << first_4_types_2{} << endl;
41 stream << "First 5 types: " << first_5_types_2{} << endl;
42}
43
45
47{
49 stream <<"Types: " << types_t{} << endl;
50
57
58 stream << "last 0 types: " << last_0_types_1{} << endl;
59 stream << "last 1 types: " << last_1_types_1{} << endl;
60 stream << "last 2 types: " << last_2_types_1{} << endl;
61 stream << "last 3 types: " << last_3_types_1{} << endl;
62 stream << "last 4 types: " << last_4_types_1{} << endl;
63 stream << "last 5 types: " << last_5_types_1{} << endl;
64
65 stream << endl;
66
67 using last_0_types_2 = types::last_n_types_t<0, types_t>;
68 using last_1_types_2 = types::last_n_types_t<1, types_t>;
69 using last_2_types_2 = types::last_n_types_t<2, types_t>;
70 using last_3_types_2 = types::last_n_types_t<3, types_t>;
71 using last_4_types_2 = types::last_n_types_t<4, types_t>;
72 using last_5_types_2 = types::last_n_types_t<5, types_t>;
73
74 stream << "last 0 types: " << last_0_types_2{} << endl;
75 stream << "last 1 types: " << last_1_types_2{} << endl;
76 stream << "last 2 types: " << last_2_types_2{} << endl;
77 stream << "last 3 types: " << last_3_types_2{} << endl;
78 stream << "last 4 types: " << last_4_types_2{} << endl;
79 stream << "last 5 types: " << last_5_types_2{} << endl;
80}
81
82int main()
83{
84 // test_first_n_types();
85
87}
tpf::sstream stream
void test_last_n_types()
auto endl
void test_first_n_types()
int main()
Type to string name conversions are defined.
Definition: 31-visit.cpp:7
hidden::last_n_types_t< LastN, Types... > last_n_types_t
Definition: tpf_types.hpp:5618
hidden::first_n_types_t< FirstN, Types... > first_n_types_t
Definition: tpf_types.hpp:5612
constexpr auto endl
Definition: tpf_output.hpp:973
This type is used to manipulate type list.
Definition: tpf_types.hpp:956
Stream output operators << are implemented.