Por que não há construção de tupla por partes?

Os modelos padrãostd::pair estd::array são casos especiais destd::tuplee é lógico que eles devem ter um conjunto muito semelhante de recursos.

No entanto, exclusivamente entre os três,std::pair permiteconstrução por partes. Isto é, se os tiposT1 eT2 pode ser construído a partir de um conjunto de argumentosa1, a2, ... eb1, b2, ...então, moralmente falando, podemos fazer um par

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

diretamente. Praticamente, isso é explicado como algo assim:

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

Questão: Por que a mesma construtibilidade por partes não existe para matrizes e tuplas? Existe uma razão profunda, ou isso é uma omissão clara? Por exemplo, seria bom ter:

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, ...));

Existe uma razão pela qual isso não pode ser feito? [Editar: Ou eu estou entendendo mal o propósito da construção por partes inteiramente?]

(Eu realmente tenho uma situação na qual gostaria de inicializar um vetor de tuplas com um valor de elemento padrão que eu preferiria construir diretamente a partir dos argumentos, sem soletrar cada tipo de elemento de tupla novamente.)

questionAnswers(3)

yourAnswerToTheQuestion