Desidero utilizzare tutti gli elementi di un std::tuple
come inizializzatore per una classe. C'è un modo più semplice rispetto a fare std::get<i-th element>(std::tuple)
per ogni elemento della tupla?Espandere std :: tuple da utilizzare come inizializzatore per la classe
minimo con 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");
}
Vedi http://coliru.stacked-crooked.com/a/4a5d45dbf1461407 per Live esempio
E.g. vedere [P0209] (http://wg21.link/p0209). –