Warum gibt es keine stückweise Tupelkonstruktion?C++

Programme in C++. Entwicklerforum
Anonymous
 Warum gibt es keine stückweise Tupelkonstruktion?

Post by Anonymous »

Die Standardvorlagen std::pair und std::array sind Sonderfälle von std::tuple, und es liegt auf der Hand, dass sie über einen sehr ähnlichen Satz an Fähigkeiten verfügen sollten.

Allerdings ermöglicht std::pair als einziges der drei einen stückweisen Aufbau. Das heißt, wenn die Typen T1 und T2 aus einer Menge von Argumenten a1, a2, ... und b1, b2, ... konstruiert werden können, dann können wir moralisch gesehen ein Paar bilden

Code: Select all

"pair p(a1, a2, ..., b1, b2, ...)"
direkt. In der Praxis wird dies etwa so ausgedrückt:

Code: Select all

std::pair p(std::piecewise_construct,
std::forward_as_tuple(a1, a2, ...),
std::forward_as_tuple(b1, b2, ...));
Frage: Warum gibt es nicht die gleiche stückweise Konstruierbarkeit für Arrays und Tupel? Gibt es einen tiefgreifenden Grund oder handelt es sich hier schlicht um ein Versäumnis? Zum Beispiel wäre es schön, Folgendes zu haben:

Code: Select all

std::tuple t(std::piecewise_construct,
std::forward_as_tuple(a1, a2, ...),
std::forward_as_tuple(b1, b2, ...),
std::forward_as_tuple(c1, c2, ...));
Gibt es einen Grund, warum dies nicht möglich ist? [Bearbeiten: Oder verstehe ich den Zweck der stückweisen Konstruktion völlig falsch?]

(Ich habe wirklich eine Situation, in der ich einen Vektor von Tupeln mit einem Standardelementwert initialisieren möchte, den ich lieber direkt aus den Argumenten konstruieren würde, ohne jeden Tupelelementtyp erneut zu buchstabieren.)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post