Commit fe62dd04 by François Dumont

stl_deque.h (deque): Access allocator value_type only if concept checks are enabled.

2017-03-20  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/stl_deque.h (deque): Access allocator value_type only if
	concept checks are enabled.
	* include/bits/stl_stack.h (stack): Likewise.
	* include/bits/stl_vector.h (vector): Likewise.
	* include/bits/stl_list.h (list): Likewise and check
	_SGIAssignableConcept only in C++03.
	* include/bits/stl_map.h (map): Likewise.
	* include/bits/stl_set.h (set): Likewise.
	* include/bits/stl_multimap.h (multimap): Likewise.
	* include/bits/stl_multiset.h (multiset): Likewise.
	* include/bits/stl_queue.h (queue, priority_queue): Likewise.

From-SVN: r246294
parent 92279d5f
2017-03-20 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_deque.h (deque): Access allocator value_type only if
concept checks are enabled.
* include/bits/stl_stack.h (stack): Likewise.
* include/bits/stl_vector.h (vector): Likewise.
* include/bits/stl_list.h (list): Likewise and check
_SGIAssignableConcept only in C++03.
* include/bits/stl_map.h (map): Likewise.
* include/bits/stl_set.h (set): Likewise.
* include/bits/stl_multimap.h (multimap): Likewise.
* include/bits/stl_multiset.h (multiset): Likewise.
* include/bits/stl_queue.h (queue, priority_queue): Likewise.
2017-03-18 Gerald Pfeifer <gerald@pfeifer.com> 2017-03-18 Gerald Pfeifer <gerald@pfeifer.com>
* doc/xml/manual/appendix_contributing.xml: Convert link to * doc/xml/manual/appendix_contributing.xml: Convert link to
......
...@@ -830,12 +830,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -830,12 +830,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
template<typename _Tp, typename _Alloc = std::allocator<_Tp> > template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
class deque : protected _Deque_base<_Tp, _Alloc> class deque : protected _Deque_base<_Tp, _Alloc>
{ {
#ifdef _GLIBCXX_CONCEPT_CHECKS
// concept requirements // concept requirements
typedef typename _Alloc::value_type _Alloc_value_type; typedef typename _Alloc::value_type _Alloc_value_type;
#if __cplusplus < 201103L # if __cplusplus < 201103L
__glibcxx_class_requires(_Tp, _SGIAssignableConcept) __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
#endif # endif
__glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept) __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
#endif
typedef _Deque_base<_Tp, _Alloc> _Base; typedef _Deque_base<_Tp, _Alloc> _Base;
typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
......
...@@ -502,10 +502,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 ...@@ -502,10 +502,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
template<typename _Tp, typename _Alloc = std::allocator<_Tp> > template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
class list : protected _List_base<_Tp, _Alloc> class list : protected _List_base<_Tp, _Alloc>
{ {
#ifdef _GLIBCXX_CONCEPT_CHECKS
// concept requirements // concept requirements
typedef typename _Alloc::value_type _Alloc_value_type; typedef typename _Alloc::value_type _Alloc_value_type;
# if __cplusplus < 201103L
__glibcxx_class_requires(_Tp, _SGIAssignableConcept) __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
# endif
__glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept) __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
#endif
typedef _List_base<_Tp, _Alloc> _Base; typedef _List_base<_Tp, _Alloc> _Base;
typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
......
...@@ -106,12 +106,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -106,12 +106,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
typedef _Alloc allocator_type; typedef _Alloc allocator_type;
private: private:
#ifdef _GLIBCXX_CONCEPT_CHECKS
// concept requirements // concept requirements
typedef typename _Alloc::value_type _Alloc_value_type; typedef typename _Alloc::value_type _Alloc_value_type;
# if __cplusplus < 201103L
__glibcxx_class_requires(_Tp, _SGIAssignableConcept) __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
# endif
__glibcxx_class_requires4(_Compare, bool, _Key, _Key, __glibcxx_class_requires4(_Compare, bool, _Key, _Key,
_BinaryFunctionConcept) _BinaryFunctionConcept)
__glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept) __glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept)
#endif
public: public:
class value_compare class value_compare
......
...@@ -105,12 +105,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -105,12 +105,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
typedef _Alloc allocator_type; typedef _Alloc allocator_type;
private: private:
#ifdef _GLIBCXX_CONCEPT_CHECKS
// concept requirements // concept requirements
typedef typename _Alloc::value_type _Alloc_value_type; typedef typename _Alloc::value_type _Alloc_value_type;
# if __cplusplus < 201103L
__glibcxx_class_requires(_Tp, _SGIAssignableConcept) __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
# endif
__glibcxx_class_requires4(_Compare, bool, _Key, _Key, __glibcxx_class_requires4(_Compare, bool, _Key, _Key,
_BinaryFunctionConcept) _BinaryFunctionConcept)
__glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept) __glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept)
#endif
public: public:
class value_compare class value_compare
......
...@@ -94,12 +94,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -94,12 +94,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
typename _Alloc = std::allocator<_Key> > typename _Alloc = std::allocator<_Key> >
class multiset class multiset
{ {
#ifdef _GLIBCXX_CONCEPT_CHECKS
// concept requirements // concept requirements
typedef typename _Alloc::value_type _Alloc_value_type; typedef typename _Alloc::value_type _Alloc_value_type;
# if __cplusplus < 201103L
__glibcxx_class_requires(_Key, _SGIAssignableConcept) __glibcxx_class_requires(_Key, _SGIAssignableConcept)
# endif
__glibcxx_class_requires4(_Compare, bool, _Key, _Key, __glibcxx_class_requires4(_Compare, bool, _Key, _Key,
_BinaryFunctionConcept) _BinaryFunctionConcept)
__glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept) __glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept)
#endif
public: public:
// typedefs: // typedefs:
......
...@@ -95,12 +95,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -95,12 +95,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp, typename _Sequence = deque<_Tp> > template<typename _Tp, typename _Sequence = deque<_Tp> >
class queue class queue
{ {
#ifdef _GLIBCXX_CONCEPT_CHECKS
// concept requirements // concept requirements
typedef typename _Sequence::value_type _Sequence_value_type; typedef typename _Sequence::value_type _Sequence_value_type;
# if __cplusplus < 201103L
__glibcxx_class_requires(_Tp, _SGIAssignableConcept) __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
# endif
__glibcxx_class_requires(_Sequence, _FrontInsertionSequenceConcept) __glibcxx_class_requires(_Sequence, _FrontInsertionSequenceConcept)
__glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept) __glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept)
__glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept) __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept)
#endif
template<typename _Tp1, typename _Seq1> template<typename _Tp1, typename _Seq1>
friend bool friend bool
...@@ -418,14 +422,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -418,14 +422,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename _Compare = less<typename _Sequence::value_type> > typename _Compare = less<typename _Sequence::value_type> >
class priority_queue class priority_queue
{ {
#ifdef _GLIBCXX_CONCEPT_CHECKS
// concept requirements // concept requirements
typedef typename _Sequence::value_type _Sequence_value_type; typedef typename _Sequence::value_type _Sequence_value_type;
# if __cplusplus < 201103L
__glibcxx_class_requires(_Tp, _SGIAssignableConcept) __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
# endif
__glibcxx_class_requires(_Sequence, _SequenceConcept) __glibcxx_class_requires(_Sequence, _SequenceConcept)
__glibcxx_class_requires(_Sequence, _RandomAccessContainerConcept) __glibcxx_class_requires(_Sequence, _RandomAccessContainerConcept)
__glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept) __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept)
__glibcxx_class_requires4(_Compare, bool, _Tp, _Tp, __glibcxx_class_requires4(_Compare, bool, _Tp, _Tp,
_BinaryFunctionConcept) _BinaryFunctionConcept)
#endif
#if __cplusplus >= 201103L #if __cplusplus >= 201103L
template<typename _Alloc> template<typename _Alloc>
......
...@@ -92,12 +92,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -92,12 +92,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
typename _Alloc = std::allocator<_Key> > typename _Alloc = std::allocator<_Key> >
class set class set
{ {
#ifdef _GLIBCXX_CONCEPT_CHECKS
// concept requirements // concept requirements
typedef typename _Alloc::value_type _Alloc_value_type; typedef typename _Alloc::value_type _Alloc_value_type;
# if __cplusplus < 201103L
__glibcxx_class_requires(_Key, _SGIAssignableConcept) __glibcxx_class_requires(_Key, _SGIAssignableConcept)
# endif
__glibcxx_class_requires4(_Compare, bool, _Key, _Key, __glibcxx_class_requires4(_Compare, bool, _Key, _Key,
_BinaryFunctionConcept) _BinaryFunctionConcept)
__glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept) __glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept)
#endif
public: public:
// typedefs: // typedefs:
......
...@@ -98,13 +98,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -98,13 +98,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp, typename _Sequence = deque<_Tp> > template<typename _Tp, typename _Sequence = deque<_Tp> >
class stack class stack
{ {
#ifdef _GLIBCXX_CONCEPT_CHECKS
// concept requirements // concept requirements
typedef typename _Sequence::value_type _Sequence_value_type; typedef typename _Sequence::value_type _Sequence_value_type;
#if __cplusplus < 201103L # if __cplusplus < 201103L
__glibcxx_class_requires(_Tp, _SGIAssignableConcept) __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
__glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept) __glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept)
#endif # endif
__glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept) __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept)
#endif
template<typename _Tp1, typename _Seq1> template<typename _Tp1, typename _Seq1>
friend bool friend bool
......
...@@ -215,12 +215,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -215,12 +215,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
template<typename _Tp, typename _Alloc = std::allocator<_Tp> > template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
class vector : protected _Vector_base<_Tp, _Alloc> class vector : protected _Vector_base<_Tp, _Alloc>
{ {
#ifdef _GLIBCXX_CONCEPT_CHECKS
// Concept requirements. // Concept requirements.
typedef typename _Alloc::value_type _Alloc_value_type; typedef typename _Alloc::value_type _Alloc_value_type;
#if __cplusplus < 201103L # if __cplusplus < 201103L
__glibcxx_class_requires(_Tp, _SGIAssignableConcept) __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
#endif # endif
__glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept) __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept)
#endif
typedef _Vector_base<_Tp, _Alloc> _Base; typedef _Vector_base<_Tp, _Alloc> _Base;
typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment