Получить базовые занятия как кортежC++

Программы на C++. Форум разработчиков
Anonymous
Получить базовые занятия как кортеж

Сообщение Anonymous »

Это продолжение, чтобы обернуть каждый базовый класс в класс шаблонов.

Код: Выделить всё

#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);
}
Запустите его на Godbolt
Есть ли способ изменить это, то есть реализовать struct_to_tuple ? std :: is_base_of требует знать оба типа заранее, поэтому мне придется запустить его со списком всех возможных кандидатов, например, struct_to_tuple .
Получить базовый класс для типа иерархии класса затрагивает тему, но смотрит на дату с некоторыми спекуляциями на C ++ 14. Он также перечисляет множественное наследство как проблема, в то время как это именно то, что я хочу.

Подробнее здесь: https://stackoverflow.com/questions/796 ... s-as-tuple

Вернуться в «C++»