Я хочу использовать все элементы std::tuple
в качестве инициализатора для класса. Есть ли более простой способ, чем выполнение std::get<i-th element>(std::tuple)
для каждого элемента кортежа?
Минимальный рабочий пример с std::get
:
#include <string>
#include <tuple>
#include <cassert>
struct A
{
std::string string1;
int intVal;
std::string string2;
};
int main()
{
std::tuple< std::string, int, std::string > myTuple("S1", 42, "S2");
A myA{ std::get<0>(myTuple), std::get<1>(myTuple), std::get<2>(myTuple) };
assert( myA.string1 == "S1" );
assert( myA.intVal == 42 );
assert( myA.string2 == "S2" );
}
Смотрите http://coliru.stacked-crooked.com/a/4a5d45dbf1461407 для живого примера