#include <iostream>
#include <tuple>
template<typename... Args>
class SimpleTuple {
public:
SimpleTuple(Args... args) : data(args...) {}
void print() const {
printTuple(data);
}
private:
std::tuple<Args...> data;
template<std::size_t I = 0>
void printTuple(const std::tuple<Args...>& t) const {
if constexpr (I < sizeof...(Args)) {
std::cout << std::get<I>(t) << " ";
printTuple<I + 1>(t);
} else {
std::cout << std::endl;
}
}
};
int main() {
SimpleTuple<int, double, std::string> tuple(1, 2.5, "Hello");
tuple.print(); // Outputs: 1 2.5 Hello
return 0;
}