Dlaczego nie ma fragmentarycznej konstrukcji krotki?

Standardowe szablonystd::pair istd::array są specjalne przypadkistd::tuplei ma rację, że powinny mieć bardzo podobny zestaw możliwości.

Jednak wyjątkowo wśród tych trzech,std::pair pozwala nabudowa fragmentaryczna. To znaczy, jeśli typyT1 iT2 może być skonstruowany z zestawu argumentówa1, a2, ... ib1, b2, ..., wtedy mówiąc moralnie możemy zrobić parę

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

bezpośrednio. Praktycznie jest to wyrażone jako coś takiego:

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

Pytanie: Dlaczego nie ma takiej samej fragmentarycznej konstruktywności dla tablic i krotek? Czy istnieje głęboki powód, czy jest to zwykłe pominięcie? Na przykład byłoby miło mieć:

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

Czy jest jakiś powód, dla którego nie można tego zrobić? [Edytować: A może nie rozumiem całkowicie celu częściowej konstrukcji?]

(Naprawdę mam sytuację, w której chciałbym zainicjować wektor krotek z domyślną wartością elementu, który wolałbym skonstruować bezpośrednio z argumentów, bez ponownego opisywania każdego typu elementu krotki).

questionAnswers(3)

yourAnswerToTheQuestion