为什么元组有uses_allocator但是对没有?

时间:2011-08-31 21:12:23

标签: c++ c++11 allocator

在尝试使用gcc 4.7.0中实现的C ++ 11 std::scoped_allocator_adaptor时,我注意到C ++ 11 FDIS为元组定义了std::uses_allocator的特化({{1} }),但不是对,但对于所有其他目的,对看起来和行为就像元组一样(它们具有20.4.2.8[tuple.traits]std::get等的特化。)

在进一步阅读时,引入这些内容的N2554定义了std::tuple_size构造函数和allocator_arg对的特化(第23-24页)。

他们为什么要成对掉队?还有另一种方法可以使用它们,我看不到,或者这是对一对有利于元组的一对弃用的暗示吗?

我的测试代码是:

uses_allocator

1 个答案:

答案 0 :(得分:4)

一个原因是我们希望避免使用15个构造函数(比如N3000)来创建一个看似简单的类,比如std :: pair。

我们现在有了一个“通用”构造函数

template <class... Args1, class... Args2>
pair(piecewise_construct_t,
     tuple<Args1...> first_args, tuple<Args2...> second_args);

您可以将任何您喜欢的内容传递给每个成员的构造函数,包括分配器。