- memory[meta header]
- std[meta namespace]
- allocator_traits[meta class]
- function[meta id-type]
- cpp11[meta cpp]
static pointer
allocate(Alloc& a, size_type n); // (1) C++11
[[nodiscard]]
static constexpr pointer
allocate(Alloc& a, size_type n); // (1) C++20
static constexpr pointer
allocate(Alloc& a, size_type n); // (1) C++26
static pointer
allocate(Alloc& a, size_type n,
const_void_pointer hint); // (2) C++11
[[nodiscard]]
static constexpr pointer
allocate(Alloc& a, size_type n,
const_void_pointer hint); // (2) C++20
static constexpr pointer
allocate(Alloc& a, size_type n,
const_void_pointer hint); // (2) C++26
メモリを確保する。
- (1) :
a.allocate(n)
- (2) :
a.allocate(n, hint)
という式が有効であればそれを呼び出し、そうでなければa.allocate(n)
を呼び出す。
#include <memory>
int main()
{
std::allocator<int> alloc;
using traits = std::allocator_traits<decltype(alloc)>;
// 10要素のint領域を確保する
std::size_t n = 10;
int* p = traits::allocate(alloc, n);
// 確保したメモリを解放する
traits::deallocate(alloc, p, n);
}
- allocate[color ff0000]
- traits::deallocate[link deallocate.md]
- C++11
- Clang: 3.0 [mark verified]
- GCC: 4.7.3 [mark verified]
- ICC: ??
- Visual C++: 2012 [mark verified], 2013 [mark verified]
- P0600R1
[[nodiscard]]
in the Library- C++20で
[[nodiscard]]
が付加された
- C++20で
- P0784R7 More constexpr containers
- C++20で
constexpr
が付加された
- C++20で
- P2422R1 Remove
nodiscard
annotations from the standard library specification- C++26で
[[nodiscard]]
指定が削除された
- C++26で