[out.of.range] # 19 Diagnostics library [[diagnostics]](./#diagnostics) ## 19.2 Exception classes [[std.exceptions]](std.exceptions#out.of.range) ### 19.2.7 Class out_of_range [out.of.range] [🔗](#lib:out_of_range) namespace std {class out_of_range : public logic_error {public:constexpr explicit out_of_range(const string& what_arg); constexpr explicit out_of_range(const char* what_arg); };} [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L257) The classout_of_range defines the type of objects thrown as exceptions to report an argument value not in its expected range[.](#1.sentence-1) [🔗](#lib:out_of_range,constructor) `constexpr out_of_range(const string& what_arg); ` [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L270) *Postconditions*: strcmp(what(), what_arg.c_str()) == 0[.](#2.sentence-1) [🔗](#lib:out_of_range,constructor_) `constexpr out_of_range(const char* what_arg); ` [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L281) *Postconditions*: strcmp(what(), what_arg) == 0[.](#3.sentence-1)