C++ 命名要求: EmplaceConstructible (自 C++11 起)
指定该类型的对象可以通过给定分配器在未初始化存储中从给定参数集构造。
要求
如果给定参数 args,类型 T 可 就地构造 到容器 X 中,且 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 的元素时要求使用自定义构造,但所有实现都只使用了默认机制。此要求已通过 P1072R10 进行更正,以符合现有实践。