Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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)

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>

home | help