Was bedeutet es, , Array der Größe Null zu haben?Std :: Array der Größe Null
Ich habe dies in SO durch ähnliche Fragen gegangen vor der Veröffentlichung, und all diese Fragen in Bezug auf einfachen Array-Typ und für C-Sprache und die meisten von ihnen sagen, dass es illegal ist. Aber in C++ ist array<int,0>
erlaubt.
Wie pro cppreference.com
Es ist ein Spezialfall für einen Null-Länge-Array (N == 0). In diesem Fall ist
array.begin() == array.end()
, die einige einzigartige Wert ist. Die Auswirkung des Aufrufs vonfront()
oderback()
auf ein Array der Größe Null ist undefiniert.
Warum es nicht als illegal definiert?
Weil templated Code von etwas wie diesem profitieren kann. – sbabbi
Warum sollte es illegal sein? Ich wäre ziemlich genervt, wenn ich meinem Code Sonderfälle hinzufügen müsste, um ein Array von null Größe zu vermeiden, anstatt "Array" auf die offensichtliche Weise behandeln zu lassen. –
@MikeSeymour 'int x [0];' * ist * illegal. Ich denke, die Frage ist, warum der Unterschied. – Angew