Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      C++ named requirements:Erasable(since C++11)

      From cppreference.com
      <cpp‎ |named req
       
       
      C++ named requirements
       

      Specifies that an object of the type can be destroyed by a givenAllocator.

      Contents

      [edit]Requirements

      Given the following types, values and expressions:

      Type Definition
      T an object type
      A an allocator type
      X a container type satisfying all following conditions:
      Value Definition
      m an lvalue of typeA
      p a pointer of typeT*

      If the expressionstd::allocator_traits<A>::destroy(m, p) is well-formed,T isErasable fromX.

      [edit]Notes

      Allstandard library containers require that their value types satisfyErasable.

      With the default allocator, this requirement is equivalent to the validity ofp->~T(), which accepts class types with accessible destructors and all scalar types, but rejects array types, function types, reference types, andvoid.

      (until C++20)

      With the default allocator, this requirement is equivalent to the validity ofstd::destroy_at(p), which accepts class types with accessible destructors and all scalar types, as well as arrays thereof.

      (since C++20)

      Although it is required that customizeddestroy is used when destroying elements ofstd::basic_string until C++23, all implementations only used the default mechanism. The requirement is corrected byP1072R10 to match existing practice.

      [edit]Defect reports

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

      DRApplied toBehavior as publishedCorrect behavior
      N3346C++11there was no requirement to specify whether a type
      whose objects can be destroyed using allocators
      added the requirement

      [edit]See also

      CopyInsertable
      MoveInsertable
      EmplaceConstructible
      Destructible
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/named_req/Erasable&oldid=177550"

      [8]ページ先頭

      ©2009-2025 Movatter.jp