¿Por qué no hay construcción de tupla por partes?

Las plantillas estandarstd::pair ystd::array son casos especiales destd::tupley es lógico que tengan un conjunto de capacidades muy similar.

Sin embargo, únicamente entre los tres,std::pair permite paraconstrucción a trozos. Es decir, si los tiposT1 yT2 se puede construir a partir de un conjunto de argumentosa1, a2, ... yb1, b2, ..., entonces moralmente hablando podemos hacer una pareja.

"pair<T1, T2> p(a1, a2, ..., b1, b2, ...)"

directamente. En la práctica, esto se explica como algo así:

std::pair<T1, T2> p(std::piecewise_construct,
                    std::forward_as_tuple(a1, a2, ...),
                    std::forward_as_tuple(b1, b2, ...));

Pregunta: ¿Por qué no existe la misma constructibilidad por partes para matrices y tuplas? ¿Hay una razón profunda, o es esto una simple omisión? Por ejemplo, sería bueno tener:

std::tuple<T1, T2, T3> t(std::piecewise_construct,
                         std::forward_as_tuple(a1, a2, ...),
                         std::forward_as_tuple(b1, b2, ...),
                         std::forward_as_tuple(c1, c2, ...));

¿Hay alguna razón para que esto no se pueda hacer? ElEditar: ¿O estoy malinterpretando completamente el propósito de la construcción por partes?]

(Realmente tengo una situación en la que me gustaría inicializar un vector de tuplas con un valor de elemento predeterminado que preferiría construir directamente a partir de los argumentos, sin volver a explicar cada tipo de elemento de tupla).

Respuestas a la pregunta(3)

Su respuesta a la pregunta