FreeBSD Manual Pages
std::nothrow(3) C++ Standard Libary std::nothrow(3) NAME std::nothrow - std::nothrow Synopsis Defined in header <new> struct nothrow_t {}; (until C++11) struct nothrow_t { explicit nothrow_t() = default; }; (since C++11) extern const std::nothrow_t nothrow; std::nothrow_t is an empty class type used to disambiguate the over- loads of throwing and non-throwing allocation functions. std::nothrow is a constant of it. Example // Run this code #include <iostream> #include <new> int main() { try { while (true) { new int[100000000ul]; // throwing overload } } catch (const std::bad_alloc& e) { std::cout << e.what() << '\n'; } while (true) { int* p = new(std::nothrow) int[100000000ul]; // non-throwing overload if (p == nullptr) { std::cout << "Allocation returned nullptr\n"; break; } } } Output: std::bad_alloc Allocation returned nullptr Defect reports The following behavior-changing defect reports were applied retroac- tively to previously published C++ standards. DR Applied to Behavior as published Correct behavior LWG 2510 C++11 the default constructor was non-explicit, which made explicit could lead to ambiguity See also operator new allocation functions operator new[] (function) http://cppreference.com 2022.07.31 std::nothrow(3)
NAME | Synopsis | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::nothrow&sektion=3&manpath=FreeBSD+Ports+15.0>
