std::nothrow (3) - Linux Man Pages

std::nothrow: std::nothrow

NAME

std::nothrow - std::nothrow

Synopsis


Defined in header <new>
extern const std::nothrow_t nothrow;


std::nothrow is a constant of type std::nothrow_t used to disambiguate the overloads of throwing and non-throwing allocation_functions.

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

See also


               tag type used to select an non-throwing allocation function
nothrow_t (class)
               allocation functions
operator_new (function)
operator_new[]