mirror of git://gcc.gnu.org/git/gcc.git
Support allocators in tuples of zero size.
* include/std/tuple (tuple<>::tuple(), tuple<>::tuple(allocator_arg_t, const _Alloc&), tuple<>::tuple(allocator_arg_t, const _Alloc&, const tuple&)): New. * testsuite/20_util/tuple/cons/allocators.cc: Adjust. From-SVN: r237143
This commit is contained in:
parent
36f9ad6933
commit
dbc6221fe5
|
|
@ -1,3 +1,11 @@
|
|||
2016-06-06 Ville Voutilainen <ville.voutilainen@gmail.com>
|
||||
|
||||
Support allocators in tuples of zero size.
|
||||
* include/std/tuple (tuple<>::tuple(),
|
||||
tuple<>::tuple(allocator_arg_t, const _Alloc&),
|
||||
tuple<>::tuple(allocator_arg_t, const _Alloc&, const tuple&)): New.
|
||||
* testsuite/20_util/tuple/cons/allocators.cc: Adjust.
|
||||
|
||||
2016-06-06 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
PR libstdc++/71320
|
||||
|
|
|
|||
|
|
@ -876,6 +876,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
{
|
||||
public:
|
||||
void swap(tuple&) noexcept { /* no-op */ }
|
||||
// We need the default since we're going to define no-op
|
||||
// allocator constructors.
|
||||
tuple() = default;
|
||||
// No-op allocator constructors.
|
||||
template<typename _Alloc>
|
||||
tuple(allocator_arg_t, const _Alloc&) { }
|
||||
template<typename _Alloc>
|
||||
tuple(allocator_arg_t, const _Alloc&, const tuple&) { }
|
||||
};
|
||||
|
||||
/// Partial specialization, 2-element tuple.
|
||||
|
|
|
|||
|
|
@ -162,8 +162,30 @@ void test01()
|
|||
|
||||
}
|
||||
|
||||
void test02()
|
||||
{
|
||||
bool test __attribute__((unused)) = true;
|
||||
using std::allocator_arg;
|
||||
using std::tuple;
|
||||
using std::make_tuple;
|
||||
|
||||
typedef tuple<> test_type;
|
||||
|
||||
MyAlloc a;
|
||||
|
||||
// default construction
|
||||
test_type t1(allocator_arg, a);
|
||||
// copy construction
|
||||
test_type t2(allocator_arg, a, t1);
|
||||
// move construction
|
||||
test_type t3(allocator_arg, a, std::move(t1));
|
||||
// make_tuple
|
||||
test_type empty = make_tuple();
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
test02();
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue