C++ 具名要求:可就位构造 (EmplaceConstructible) (C++11 起)

来自cppreference.com
< cpp‎ | named req
 
 
C++ 具名要求
基础
类型属性
库所属
容器
容器元素
EmplaceConstructible
(C++11)
(C++11)

迭代器
流 I/O
格式化
(C++20)
随机数
(C++11)    
并发
(C++11)
(C++11)
范围
其他
(C++11)


 

指定该类型的对象能以给定的分配器从给定的一组实参构造到未初始化存储之中。

要求

以下情况下,类型 T 为从实参 args 可就位构造 (EmplaceConstructible) 容器 (Container) X(其 value_type 等同于 T):给定

A 具分配器类型
m A 类型的左值
p 容器所准备的 T* 类型的指针
args 零或更多实参

其中 X::allocator_type 等同于 std::allocator_traits<A>::rebind_alloc<T>

下列表达式良构:

std::allocator_traits<A>::construct(m, p, args);

X 非知分配器或为 std::basic_string 特化,则如同 A 就是 std::allocator<T> 一样进行定义,但并不需要创建分配器对象,且不会实例化用户定义的 std::allocator 的特化。

注解

尽管 C++23 前要求在构造 std::basic_string 的元素时使用定制的 construct,所有实现都使用默认机制。P1072R10 更正了该要求以匹配既存实现。

参阅

可复制插入 (CopyInsertable)
可移动插入 (MoveInsertable)