【发布时间】:2016-03-22 12:52:05
【问题描述】:
我在标准 (n4296)、23.2.3/4 (表 100) 中看到了对序列 stl 容器的要求,并阅读了一个采用参数迭代器(X - 容器,i 和 j - 输入迭代器)的构造函数)
X(i, j)
X a(i, j)
要求容器的元素类型是 EmplaceConstructible。
Requires: T shall be EmplaceConstructible into X from *i
我认为可以通过为范围内的每个迭代器调用 std::allocator_traits::construct (m, p, *it) 方法来实现构造函数(其中 m - A 类型的分配器,p - 指向内存的指针,它- [i; j) 中的迭代器,并且元素只有 CopyInsertable 概念是必需的,因为只为复制/移动提供了一个参数,而 EmplaceConstructible 概念需要从一组参数构造元素。这个决定有什么理由吗?
【问题讨论】:
标签: c++ c++11 stl c++14 c++-concepts