std:: out_of_range
|
Défini dans l'en-tête
<stdexcept>
|
||
|
class
out_of_range
;
|
||
Définit un type d'objet à lancer comme exception. Il signale des erreurs qui sont la conséquence d'une tentative d'accéder à des éléments en dehors de la plage définie.
Il peut être levé par les fonctions membres de std::bitset et std::basic_string , par les familles de fonctions std::stoi et std::stod , et par les fonctions d'accès aux membres avec vérification des limites (par exemple std::vector::at et std::map::at ).
Toutes les fonctions membres de
std::out_of_range
sont
constexpr
: il est possible de créer et d'utiliser des objets
std::out_of_range
lors de l'évaluation d'une expression constante.
Cependant, les objets
|
(depuis C++26) |
Diagramme d'héritage
Table des matières |
Fonctions membres
|
(constructeur)
|
construit un nouvel objet
out_of_range
avec le message donné
(fonction membre publique) |
|
operator=
|
remplace l'objet
out_of_range
(fonction membre publique) |
std::out_of_range:: out_of_range
|
out_of_range
(
const
std::
string
&
what_arg
)
;
|
(1) | (constexpr depuis C++26) |
|
out_of_range
(
const
char
*
what_arg
)
;
|
(2) | (constexpr depuis C++26) |
|
out_of_range
(
const
out_of_range
&
other
)
;
|
(3) |
(noexcept depuis C++11)
(constexpr depuis C++26) |
std::out_of_range
alors
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
. Aucune exception ne peut être levée depuis le constructeur de copie.
Paramètres
| what_arg | - | chaîne explicative |
| other | - | autre objet d'exception à copier |
Exceptions
Notes
Étant donné que la copie de
std::out_of_range
n'est pas autorisée à lever des exceptions, ce message est généralement stocké en interne sous forme de chaîne à comptage de références allouée séparément. C'est aussi pourquoi il n'y a pas de constructeur prenant
std::string&&
: il devrait de toute façon copier le contenu.
Avant la résolution de LWG issue 254 , le constructeur non-copie ne pouvait accepter que std::string . Cela rendait l'allocation dynamique obligatoire pour construire un objet std::string .
Après la résolution de
LWG issue 471
, une classe d'exception standard dérivée doit avoir un constructeur de copie accessible publiquement. Il peut être implicitement défini tant que les chaînes explicatives obtenues par
what()
sont les mêmes pour l'objet original et l'objet copié.
std::out_of_range:: operator=
|
out_of_range
&
operator
=
(
const
out_of_range
&
other
)
;
|
(noexcept depuis C++11)
(constexpr depuis C++26) |
|
Assigne le contenu avec celui de
other
. Si
*
this
et
other
ont tous deux le type dynamique
std::out_of_range
alors
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
après l'assignation. Aucune exception ne peut être levée par l'opérateur d'assignation de copie.
Paramètres
| other | - | un autre objet exception à assigner |
Valeur de retour
* this
Notes
Après la résolution de
LWG issue 471
, une classe d'exception standard dérivée doit avoir un opérateur d'assignation de copie accessible publiquement. Il peut être défini implicitement tant que les chaînes explicatives obtenues par
what()
sont les mêmes pour l'objet original et l'objet copié.
Hérité de std:: logic_error
Hérité de std:: exception
Fonctions membres
|
[virtuel]
|
détruit l'objet exception
(fonction membre publique virtuelle de
std::exception
)
|
|
[virtuel]
|
retourne une chaîne explicative
(fonction membre publique virtuelle de
std::exception
)
|
Notes
L'erreur standard std::errc::result_out_of_range indique généralement la condition où le résultat, plutôt que l'entrée, est hors limites, et est plus étroitement liée à std::range_error et ERANGE .
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_constexpr_exceptions
|
202502L
|
(C++26) | constexpr types d'exception |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 254 | C++98 | le constructeur acceptant const char * était manquant | ajouté |
| LWG 471 | C++98 |
les chaînes explicatives des copies de
std::out_of_range
étaient définies par l'implémentation |
elles sont identiques à celles de l'objet
original
std::out_of_range
|
Voir aussi
|
accède au caractère spécifié avec vérification des limites
(fonction membre publique de
std::basic_string<CharT,Traits,Allocator>
)
|
|
|
accède au caractère spécifié avec vérification des limites
(fonction membre publique de
std::basic_string_view<CharT,Traits>
)
|
|
|
accède à l'élément spécifié avec vérification des limites
(fonction membre publique de
std::deque<T,Allocator>
)
|
|
|
accède à l'élément spécifié avec vérification des limites
(fonction membre publique de
std::map<Key,T,Compare,Allocator>
)
|
|
|
accède à l'élément spécifié avec vérification des limites
(fonction membre publique de
std::unordered_map<Key,T,Hash,KeyEqual,Allocator>
)
|
|
|
accède à l'élément spécifié avec vérification des limites
(fonction membre publique de
std::vector<T,Allocator>
)
|
|
|
accède à l'élément spécifié avec vérification des limites
(fonction membre publique de
std::array<T,N>
)
|
|
|
(C++26)
|
accède à l'élément spécifié avec vérification des limites
(fonction membre publique de
std::span<T,Extent>
)
|