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; };	(1)	(since
       C++11)
	  extern const std::nothrow_t nothrow;			    (2)

	  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		  2024.06.10		       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.1.quarterly>

home | help