mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-05 00:31:30 +08:00
array (array): Add pointer and const_pointer typedefs in C++0x mode, per DR 1306.
2010-02-19 Paolo Carlini <paolo.carlini@oracle.com> * include/tr1_impl/array (array): Add pointer and const_pointer typedefs in C++0x mode, per DR 1306. * testsuite/util/testsuite_containers.h (basic_types): Add pointer and const_pointer typedefs. (pointer_aware_types): Remove. * testsuite/util/testsuite_container_traits.h: Adjust. From-SVN: r156906
This commit is contained in:
parent
25c0cad4fe
commit
cf9280bf7e
@ -1,3 +1,12 @@
|
||||
2010-02-19 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* include/tr1_impl/array (array): Add pointer and const_pointer
|
||||
typedefs in C++0x mode, per DR 1306.
|
||||
* testsuite/util/testsuite_containers.h (basic_types): Add pointer
|
||||
and const_pointer typedefs.
|
||||
(pointer_aware_types): Remove.
|
||||
* testsuite/util/testsuite_container_traits.h: Adjust.
|
||||
|
||||
2010-02-19 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* include/bits/stl_algo.h (for_each): Implement resolution of DR 1110.
|
||||
|
@ -1,6 +1,6 @@
|
||||
// class template array -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@ -49,6 +49,10 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1
|
||||
struct array
|
||||
{
|
||||
typedef _Tp value_type;
|
||||
#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
|
||||
typedef _Tp* pointer;
|
||||
typedef const _Tp* const_pointer;
|
||||
#endif
|
||||
typedef value_type& reference;
|
||||
typedef const value_type& const_reference;
|
||||
typedef value_type* iterator;
|
||||
|
@ -34,7 +34,6 @@ namespace __gnu_test
|
||||
typedef std::false_type is_adaptor;
|
||||
typedef std::false_type is_reversible;
|
||||
typedef std::false_type is_allocator_aware;
|
||||
typedef std::false_type is_pointer_aware;
|
||||
typedef std::false_type is_associative;
|
||||
typedef std::false_type is_unordered;
|
||||
typedef std::false_type is_mapped;
|
||||
@ -64,7 +63,6 @@ namespace __gnu_test
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_reversible;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
|
||||
typedef std::true_type has_erase;
|
||||
typedef std::true_type has_insert;
|
||||
@ -77,7 +75,6 @@ namespace __gnu_test
|
||||
{
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
|
||||
typedef std::true_type has_erase;
|
||||
typedef std::true_type has_insert;
|
||||
@ -91,7 +88,6 @@ namespace __gnu_test
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_reversible;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
|
||||
typedef std::true_type has_erase;
|
||||
typedef std::true_type has_insert;
|
||||
@ -105,7 +101,6 @@ namespace __gnu_test
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_reversible;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
|
||||
typedef std::true_type has_erase;
|
||||
typedef std::true_type has_insert;
|
||||
@ -118,7 +113,6 @@ namespace __gnu_test
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_reversible;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
|
||||
typedef std::true_type has_erase;
|
||||
typedef std::true_type has_insert;
|
||||
@ -132,7 +126,6 @@ namespace __gnu_test
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_reversible;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
|
||||
typedef std::true_type has_erase;
|
||||
typedef std::true_type has_insert;
|
||||
@ -144,7 +137,6 @@ namespace __gnu_test
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_reversible;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
typedef std::true_type is_associative;
|
||||
typedef std::true_type is_mapped;
|
||||
|
||||
@ -157,7 +149,6 @@ namespace __gnu_test
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_reversible;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
typedef std::true_type is_associative;
|
||||
typedef std::true_type is_mapped;
|
||||
|
||||
@ -170,7 +161,6 @@ namespace __gnu_test
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_reversible;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
typedef std::true_type is_associative;
|
||||
|
||||
typedef std::true_type has_insert;
|
||||
@ -182,7 +172,6 @@ namespace __gnu_test
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_reversible;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
typedef std::true_type is_associative;
|
||||
|
||||
typedef std::true_type has_insert;
|
||||
@ -213,7 +202,6 @@ namespace __gnu_test
|
||||
{
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
typedef std::true_type is_unordered;
|
||||
typedef std::true_type is_mapped;
|
||||
|
||||
@ -228,7 +216,6 @@ namespace __gnu_test
|
||||
{
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
typedef std::true_type is_unordered;
|
||||
typedef std::true_type is_mapped;
|
||||
|
||||
@ -241,7 +228,6 @@ namespace __gnu_test
|
||||
{
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
typedef std::true_type is_unordered;
|
||||
|
||||
typedef std::true_type has_size_type_constructor;
|
||||
@ -254,7 +240,6 @@ namespace __gnu_test
|
||||
{
|
||||
typedef std::true_type is_container;
|
||||
typedef std::true_type is_allocator_aware;
|
||||
typedef std::true_type is_pointer_aware;
|
||||
typedef std::true_type is_unordered;
|
||||
|
||||
typedef std::true_type has_size_type_constructor;
|
||||
|
@ -1,6 +1,6 @@
|
||||
// -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the terms
|
||||
@ -33,6 +33,8 @@ namespace __gnu_test
|
||||
// Base container requirements (table 80)
|
||||
typedef _Tp test_type;
|
||||
typedef typename test_type::value_type value_type;
|
||||
typedef typename test_type::pointer pointer;
|
||||
typedef typename test_type::const_pointer const_pointer;
|
||||
typedef typename test_type::reference reference;
|
||||
typedef typename test_type::const_reference const_reference;
|
||||
typedef typename test_type::iterator iterator;
|
||||
@ -59,15 +61,6 @@ namespace __gnu_test
|
||||
typedef typename test_type::allocator_type allocator_type;
|
||||
};
|
||||
|
||||
template<typename _Tp, bool _Bt = traits<_Tp>::is_pointer_aware::value>
|
||||
struct pointer_aware_types
|
||||
{
|
||||
// Allocator-aware requirements (table 82)
|
||||
typedef _Tp test_type;
|
||||
typedef typename test_type::pointer pointer;
|
||||
typedef typename test_type::const_pointer const_pointer;
|
||||
};
|
||||
|
||||
template<typename _Tp, bool _Bt = traits<_Tp>::is_associative::value>
|
||||
struct associative_types
|
||||
{
|
||||
@ -113,15 +106,15 @@ namespace __gnu_test
|
||||
template<typename _Tp>
|
||||
struct basic_types<_Tp, false> { };
|
||||
|
||||
template<typename _Tp>
|
||||
struct adaptor_types<_Tp, false> { };
|
||||
|
||||
template<typename _Tp>
|
||||
struct reversible_types<_Tp, false> { };
|
||||
|
||||
template<typename _Tp>
|
||||
struct allocator_aware_types<_Tp, false> { };
|
||||
|
||||
template<typename _Tp>
|
||||
struct pointer_aware_types<_Tp, false> { };
|
||||
|
||||
template<typename _Tp>
|
||||
struct associative_types<_Tp, false> { };
|
||||
|
||||
@ -131,15 +124,12 @@ namespace __gnu_test
|
||||
template<typename _Tp>
|
||||
struct mapped_types<_Tp, false> { };
|
||||
|
||||
template<typename _Tp>
|
||||
struct adaptor_types<_Tp, false> { };
|
||||
|
||||
// Primary template.
|
||||
template<typename _Tp>
|
||||
struct types
|
||||
: basic_types<_Tp>, adaptor_types<_Tp>, reversible_types<_Tp>,
|
||||
allocator_aware_types<_Tp>, pointer_aware_types<_Tp>,
|
||||
associative_types<_Tp>, unordered_types<_Tp>, mapped_types<_Tp>
|
||||
allocator_aware_types<_Tp>, associative_types<_Tp>,
|
||||
unordered_types<_Tp>, mapped_types<_Tp>
|
||||
{ };
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user