example5_template_metaprogramming.cpp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <tuple>
#include <string>
#include <type_traits>

// Template to print tuple elements
template<typename Tuple, std::size_t N>
struct TuplePrinter {
    static void print(const Tuple& t) {
        TuplePrinter<Tuple, N-1>::print(t);
        std::cout << ", " << std::get<N-1>(t);
    }
};

template<typename Tuple>
struct TuplePrinter<Tuple, 1> {
    static void print(const Tuple& t) {
        std::cout << std::get<0>(t);
    }
};

template<typename... Args>
void printTuple(const std::tuple<Args...>& t) {
    std::cout << "(";
    TuplePrinter<decltype(t), sizeof...(Args)>::print(t);
    std::cout << ")" << std::endl;
}

int main() {
    auto t1 = std::make_tuple(1, "Hello", 3.14);
    auto t2 = std::make_tuple(42, std::string("World"));

    std::cout << "Tuple 1: ";
    printTuple(t1);

    std::cout << "Tuple 2: ";
    printTuple(t2);

    return 0;
}
Back to tuple