Von cppreference
Es gibt einen speziellen Fall 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 von front()
oder back()
auf ein Array der Größe Null ist undefiniert.
So, da wir ein 0 Größe Array kann front()
und back()
könnte eine Ausnahme
verursachen Sebastian Redl Zitat auf why the standard doesn't mandate operator[]
, front
and back
be marked noexcept
Die Politik der Standard auf noexcept
ist nur Zeichen Funktionen, die sich nicht oder darf nicht fehlschlagen, aber nicht diejenigen, die einfach angegeben sind, keine Ausnahmen zu werfen. Mit anderen Worten, alle Funktionen, die eine begrenzte Domäne haben (die falschen Argumente übergeben und nicht definiertes Verhalten erhalten), sind nicht noexcept
, auch wenn sie nicht zum Werfen angegeben sind.
Gute Frage. Sie müssten bedingt sein, außer dass die Array-Größe nicht Null ist. Aber Verkäufer können noexceptisness als QoI ... –
@KerrekSB nicht sogar bedingt wie 'std :: array', konnte sich spezialisieren, um jene 'noexcept' nicht zu haben 'std :: array '. Leider sieht der Standard das nicht vor. –
edmz