#include <iostream>
#include <tuple>
struct FlowOne
{
using return_type = int;
static return_type get()
{
return 42;
}
};
struct FlowTwo
{
using return_type = float;
static return_type get()
{
return 42.1;
}
};
template <typename... Args>
class Main
{
public:
using merged_type = std::tuple<decltype(Args::get())...>;
merged_type get()
{
return {Args::get()...};
}
};
int main()
{
const auto ret = Main<FlowOne, FlowTwo>().get();
std::cout << std::get<0>(ret) << std::endl;
std::cout << std::get<1>(ret) << std::endl;
}