Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::nothrow

      From cppreference.com
      <cpp‎ |memory‎ |new
       
       
      Utilities library
       
      Memory management library
      (exposition only*)
      Allocators
      Uninitialized memory algorithms
      Constrained uninitialized memory algorithms
      Memory resources
      Uninitialized storage(until C++20)
      (until C++20*)
      (until C++20*)
      Garbage collector support(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
       
       
      Defined in header<new>
      (1)
      struct nothrow_t{};
      (until C++11)
      struct nothrow_t{explicit nothrow_t()=default;};
      (since C++11)
      externconststd::nothrow_t nothrow;
      (2)

      std::nothrow_t is an empty class type used to disambiguate the overloads of throwing and non-throwingallocation functions.std::nothrow is a constant of it.

      [edit]Example

      Run this code
      #include <iostream>#include <new> int main(){try{while(true){            newint[100000000ul];// throwing overload}}catch(conststd::bad_alloc& e){std::cout<< e.what()<<'\n';} while(true){int* p= new(std::nothrow)int[100000000ul];// non-throwing overloadif(p== nullptr){std::cout<<"Allocation returned nullptr\n";break;}}}

      Output:

      std::bad_allocAllocation returned nullptr

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 2510C++11the default constructor was non-explicit, which could lead to ambiguitymade explicit

      [edit]See also

      allocation functions
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/memory/new/nothrow&oldid=170811"

      [8]ページ先頭

      ©2009-2025 Movatter.jp