Получить базовые занятия как кортеж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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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