#include <iostream>
#include <tuple>
template<typename... Args>
auto tuple_from_funs(Args&&... args) -> std::tuple<decltype(args())...>{
return std::make_tuple(args()...);
}
int f() { return 1; }
char g() { return '2'; }
std::string h() { return "jorge"; }
int main() {
auto tup = tuple_from_funs(f, g, h);
std::cout << std::get<0>(tup) << ", " << std::get<1>(tup) << ", " << std::get<2>(tup) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHVwbGU+Cgp0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgphdXRvIHR1cGxlX2Zyb21fZnVucyhBcmdzJiYuLi4gYXJncykgLT4gc3RkOjp0dXBsZTxkZWNsdHlwZShhcmdzKCkpLi4uPnsKICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoYXJncygpLi4uKTsKfQoKaW50IGYoKSB7IHJldHVybiAxOyB9CmNoYXIgZygpIHsgcmV0dXJuICcyJzsgfQpzdGQ6OnN0cmluZyBoKCkgeyByZXR1cm4gImpvcmdlIjsgfQoKaW50IG1haW4oKSB7CiAgICBhdXRvIHR1cCA9IHR1cGxlX2Zyb21fZnVucyhmLCBnLCBoKTsKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmdldDwwPih0dXApIDw8ICIsICIgPDwgc3RkOjpnZXQ8MT4odHVwKSA8PCAiLCAiIDw8IHN0ZDo6Z2V0PDI+KHR1cCkgPDwgc3RkOjplbmRsOwp9Cg==