在尝试使用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
答案 0 :(得分:4)
一个原因是我们希望避免使用15个构造函数(比如N3000)来创建一个看似简单的类,比如std :: pair。
我们现在有了一个“通用”构造函数
template <class... Args1, class... Args2>
pair(piecewise_construct_t,
tuple<Args1...> first_args, tuple<Args2...> second_args);
您可以将任何您喜欢的内容传递给每个成员的构造函数,包括分配器。