Декомпозиция кортежей в декларативном стиле:
my_tuple t(1, 2.0, 'x'); // кортеж произвольного типа my_tuple
int a; float b; char c; // переменные, в которые хотим распаковать
decomposed(t) = a, b, c; // присваивание (задом наперёд, т.к. C++ не даёт реализовать "=" снаружи класса,
// самая удачная из возможных "прямая" нотация - std::tie(a, b, c) = ...)
Для работы требуется задать правила декомпозиции (в данном случае - класса my_tuple
):
DECOMPOSER_RULE(my_tuple, 0, int, const my_tuple& t, t.a)
DECOMPOSER_RULE(my_tuple, 1, float, const my_tuple& t, t.b)
DECOMPOSER_RULE(my_tuple, 2, char, const my_tuple& t, t.c)
Вывод main.cpp:
a=1 b=2 c=x
My IP is 192.168.0.1