#include <iostream>
#include <tuple>
#include <type_traits>
#include <sstream>
template<size_t N, class... Args>
std::enable_if_t<(N >= sizeof...(Args)), void> read_nth_element(std::tuple<Args...> &t, std::istream &stream) {
}
template<size_t N, class... Args>
std::enable_if_t<(N < sizeof...(Args)), void> read_nth_element(std::tuple<Args...> &t, std::istream &stream) {
stream >> std::get<N>(t);
read_nth_element<N + 1, Args...>(t, stream);
}
template<class... Args>
std::tuple<Args...> read_tuple(std::istream &stream) {
std::tuple<Args...> result;
read_nth_element<0, Args...>(result, stream);
return result;
}
int main() {
std::string str("a 10.0 123");
std::stringstream stream(str);
auto tuple = read_tuple<std::string, float, int>(stream);
std::cout << std::get<0>(tuple) << " " << std::get<1>(tuple) << " " << std::get<2>(tuple) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHVwbGU+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KI2luY2x1ZGUgPHNzdHJlYW0+Cgp0ZW1wbGF0ZTxzaXplX3QgTiwgY2xhc3MuLi4gQXJncz4Kc3RkOjplbmFibGVfaWZfdDwoTiA+PSBzaXplb2YuLi4oQXJncykpLCB2b2lkPiByZWFkX250aF9lbGVtZW50KHN0ZDo6dHVwbGU8QXJncy4uLj4gJnQsIHN0ZDo6aXN0cmVhbSAmc3RyZWFtKSB7Cn0KCnRlbXBsYXRlPHNpemVfdCBOLCBjbGFzcy4uLiBBcmdzPiAKc3RkOjplbmFibGVfaWZfdDwoTiA8IHNpemVvZi4uLihBcmdzKSksIHZvaWQ+IHJlYWRfbnRoX2VsZW1lbnQoc3RkOjp0dXBsZTxBcmdzLi4uPiAmdCwgc3RkOjppc3RyZWFtICZzdHJlYW0pIHsKCXN0cmVhbSA+PiBzdGQ6OmdldDxOPih0KTsKCXJlYWRfbnRoX2VsZW1lbnQ8TiArIDEsIEFyZ3MuLi4+KHQsIHN0cmVhbSk7Cn0KCgp0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgpzdGQ6OnR1cGxlPEFyZ3MuLi4+IHJlYWRfdHVwbGUoc3RkOjppc3RyZWFtICZzdHJlYW0pIHsKCXN0ZDo6dHVwbGU8QXJncy4uLj4gcmVzdWx0OwoJcmVhZF9udGhfZWxlbWVudDwwLCBBcmdzLi4uPihyZXN1bHQsIHN0cmVhbSk7CgkKCXJldHVybiByZXN1bHQ7Cn0KCgppbnQgbWFpbigpIHsKCXN0ZDo6c3RyaW5nIHN0cigiYSAxMC4wIDEyMyIpOwoJc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtKHN0cik7CgkKCWF1dG8gdHVwbGUgPSByZWFkX3R1cGxlPHN0ZDo6c3RyaW5nLCBmbG9hdCwgaW50PihzdHJlYW0pOwoJCglzdGQ6OmNvdXQgPDwgc3RkOjpnZXQ8MD4odHVwbGUpIDw8ICIgIiA8PCBzdGQ6OmdldDwxPih0dXBsZSkgPDwgIiAiIDw8IHN0ZDo6Z2V0PDI+KHR1cGxlKSA8PCBzdGQ6OmVuZGw7Cn0K