Код: Выделить всё
#include
#include
#include
namespace detail {
template
struct tuple_to_struct_impl : Ts... {};
}
template
struct tuple_to_struct;
template
struct tuple_to_struct :
detail::tuple_to_struct_impl {};
struct x { int i; };
struct y { int j; };
struct z { int k; };
using t = std::tuple;
using xyz = tuple_to_struct;
int main() {
xyz s{ 1, 2, 3 };
std::printf("%d, %d, %d", s.i, s.j, s.k);
}
Есть ли способ изменить это, то есть реализовать struct_to_tuple ? std :: is_base_of требует знать оба типа заранее, поэтому мне придется запустить его со списком всех возможных кандидатов, например, struct_to_tuple .
Получить базовый класс для типа иерархии класса затрагивает тему, но смотрит на дату с некоторыми спекуляциями на C ++ 14. Он также перечисляет множественное наследство как проблема, в то время как это именно то, что я хочу.
Подробнее здесь: https://stackoverflow.com/questions/796 ... s-as-tuple
Мобильная версия