📄 boost_concept_check.h
字号:
void __constraints() { __function_requires< _ForwardContainerConcept<_ForwardContainer> >(); __function_requires< _Mutable_ContainerConcept<_ForwardContainer> >(); typedef typename _ForwardContainer::iterator _Iterator; __function_requires< _Mutable_ForwardIteratorConcept<_Iterator> >(); } }; template <class _ReversibleContainer> struct _ReversibleContainerConcept { typedef typename _ReversibleContainer::const_iterator _Const_iterator; typedef typename _ReversibleContainer::const_reverse_iterator _Const_reverse_iterator; void __constraints() { __function_requires< _ForwardContainerConcept<_ReversibleContainer> >(); __function_requires< _BidirectionalIteratorConcept<_Const_iterator> >(); __function_requires< _BidirectionalIteratorConcept<_Const_reverse_iterator> >(); const _ReversibleContainer __c; _Const_reverse_iterator __i = __c.rbegin(); __i = __c.rend(); } }; template <class _ReversibleContainer> struct _Mutable_ReversibleContainerConcept { typedef typename _ReversibleContainer::iterator _Iterator; typedef typename _ReversibleContainer::reverse_iterator _Reverse_iterator; void __constraints() { __function_requires<_ReversibleContainerConcept<_ReversibleContainer> >(); __function_requires< _Mutable_ForwardContainerConcept<_ReversibleContainer> >(); __function_requires<_Mutable_BidirectionalIteratorConcept<_Iterator> >(); __function_requires< _Mutable_BidirectionalIteratorConcept<_Reverse_iterator> >(); _Reverse_iterator __i = __c.rbegin(); __i = __c.rend(); } _ReversibleContainer __c; }; template <class _RandomAccessContainer> struct _RandomAccessContainerConcept { typedef typename _RandomAccessContainer::size_type _Size_type; typedef typename _RandomAccessContainer::const_reference _Const_reference; typedef typename _RandomAccessContainer::const_iterator _Const_iterator; typedef typename _RandomAccessContainer::const_reverse_iterator _Const_reverse_iterator; void __constraints() { __function_requires< _ReversibleContainerConcept<_RandomAccessContainer> >(); __function_requires< _RandomAccessIteratorConcept<_Const_iterator> >(); __function_requires< _RandomAccessIteratorConcept<_Const_reverse_iterator> >(); const _RandomAccessContainer __c; _Const_reference __r _IsUnused = __c[__n]; } _Size_type __n; }; template <class _RandomAccessContainer> struct _Mutable_RandomAccessContainerConcept { typedef typename _RandomAccessContainer::size_type _Size_type; typedef typename _RandomAccessContainer::reference _Reference; typedef typename _RandomAccessContainer::iterator _Iterator; typedef typename _RandomAccessContainer::reverse_iterator _Reverse_iterator; void __constraints() { __function_requires< _RandomAccessContainerConcept<_RandomAccessContainer> >(); __function_requires< _Mutable_ReversibleContainerConcept<_RandomAccessContainer> >(); __function_requires< _Mutable_RandomAccessIteratorConcept<_Iterator> >(); __function_requires< _Mutable_RandomAccessIteratorConcept<_Reverse_iterator> >(); _Reference __r _IsUnused = __c[__i]; } _Size_type __i; _RandomAccessContainer __c; }; // A Sequence is inherently mutable template <class _Sequence> struct _SequenceConcept { typedef typename _Sequence::reference _Reference; typedef typename _Sequence::const_reference _Const_reference; void __constraints() { // Matt Austern's book puts DefaultConstructible here, the C++ // standard places it in Container // function_requires< DefaultConstructible<Sequence> >(); __function_requires< _Mutable_ForwardContainerConcept<_Sequence> >(); __function_requires< _DefaultConstructibleConcept<_Sequence> >(); _Sequence __c _IsUnused(__n, __t), __c2 _IsUnused(__first, __last); __c.insert(__p, __t); __c.insert(__p, __n, __t); __c.insert(__p, __first, __last); __c.erase(__p); __c.erase(__p, __q); _Reference __r _IsUnused = __c.front(); __const_constraints(__c); } void __const_constraints(const _Sequence& __c) { _Const_reference __r _IsUnused = __c.front(); } typename _Sequence::value_type __t; typename _Sequence::size_type __n; typename _Sequence::value_type *__first, *__last; typename _Sequence::iterator __p, __q; }; template <class _FrontInsertionSequence> struct _FrontInsertionSequenceConcept { void __constraints() { __function_requires< _SequenceConcept<_FrontInsertionSequence> >(); __c.push_front(__t); __c.pop_front(); } _FrontInsertionSequence __c; typename _FrontInsertionSequence::value_type __t; }; template <class _BackInsertionSequence> struct _BackInsertionSequenceConcept { typedef typename _BackInsertionSequence::reference _Reference; typedef typename _BackInsertionSequence::const_reference _Const_reference; void __constraints() { __function_requires< _SequenceConcept<_BackInsertionSequence> >(); __c.push_back(__t); __c.pop_back(); _Reference __r _IsUnused = __c.back(); } void __const_constraints(const _BackInsertionSequence& __c) { _Const_reference __r _IsUnused = __c.back(); }; _BackInsertionSequence __c; typename _BackInsertionSequence::value_type __t; }; template <class _AssociativeContainer> struct _AssociativeContainerConcept { void __constraints() { __function_requires< _ForwardContainerConcept<_AssociativeContainer> >(); __function_requires< _DefaultConstructibleConcept<_AssociativeContainer> >(); __i = __c.find(__k); __r = __c.equal_range(__k); __c.erase(__k); __c.erase(__i); __c.erase(__r.first, __r.second); __const_constraints(__c); } void __const_constraints(const _AssociativeContainer& __c) { __ci = __c.find(__k); __n = __c.count(__k); __cr = __c.equal_range(__k); } typedef typename _AssociativeContainer::iterator _Iterator; typedef typename _AssociativeContainer::const_iterator _Const_iterator; _AssociativeContainer __c; _Iterator __i; std::pair<_Iterator,_Iterator> __r; _Const_iterator __ci; std::pair<_Const_iterator,_Const_iterator> __cr; typename _AssociativeContainer::key_type __k; typename _AssociativeContainer::size_type __n; }; template <class _UniqueAssociativeContainer> struct _UniqueAssociativeContainerConcept { void __constraints() { __function_requires< _AssociativeContainerConcept<_UniqueAssociativeContainer> >(); _UniqueAssociativeContainer __c(__first, __last); __pos_flag = __c.insert(__t); __c.insert(__first, __last); } std::pair<typename _UniqueAssociativeContainer::iterator, bool> __pos_flag; typename _UniqueAssociativeContainer::value_type __t; typename _UniqueAssociativeContainer::value_type *__first, *__last; }; template <class _MultipleAssociativeContainer> struct _MultipleAssociativeContainerConcept { void __constraints() { __function_requires< _AssociativeContainerConcept<_MultipleAssociativeContainer> >(); _MultipleAssociativeContainer __c(__first, __last); __pos = __c.insert(__t); __c.insert(__first, __last); } typename _MultipleAssociativeContainer::iterator __pos; typename _MultipleAssociativeContainer::value_type __t; typename _MultipleAssociativeContainer::value_type *__first, *__last; }; template <class _SimpleAssociativeContainer> struct _SimpleAssociativeContainerConcept { void __constraints() { __function_requires< _AssociativeContainerConcept<_SimpleAssociativeContainer> >(); typedef typename _SimpleAssociativeContainer::key_type _Key_type; typedef typename _SimpleAssociativeContainer::value_type _Value_type; typedef typename _Aux_require_same<_Key_type, _Value_type>::_Type _Required; } }; template <class _SimpleAssociativeContainer> struct _PairAssociativeContainerConcept { void __constraints() { __function_requires< _AssociativeContainerConcept<_SimpleAssociativeContainer> >(); typedef typename _SimpleAssociativeContainer::key_type _Key_type; typedef typename _SimpleAssociativeContainer::value_type _Value_type; typedef typename _SimpleAssociativeContainer::mapped_type _Mapped_type; typedef std::pair<const _Key_type, _Mapped_type> _Required_value_type; typedef typename _Aux_require_same<_Value_type, _Required_value_type>::_Type _Required; } }; template <class _SortedAssociativeContainer> struct _SortedAssociativeContainerConcept { void __constraints() { __function_requires< _AssociativeContainerConcept<_SortedAssociativeContainer> >(); __function_requires< _ReversibleContainerConcept<_SortedAssociativeContainer> >(); _SortedAssociativeContainer __c _IsUnused(__kc), __c2 _IsUnused(__first, __last), __c3 _IsUnused(__first, __last, __kc); __p = __c.upper_bound(__k); __p = __c.lower_bound(__k); __r = __c.equal_range(__k); __c.insert(__p, __t); } void __const_constraints(const _SortedAssociativeContainer& __c) { __kc = __c.key_comp(); __vc = __c.value_comp(); __cp = __c.upper_bound(__k); __cp = __c.lower_bound(__k); __cr = __c.equal_range(__k); } typename _SortedAssociativeContainer::key_compare __kc; typename _SortedAssociativeContainer::value_compare __vc; typename _SortedAssociativeContainer::value_type __t; typename _SortedAssociativeContainer::key_type __k; typedef typename _SortedAssociativeContainer::iterator _Iterator; typedef typename _SortedAssociativeContainer::const_iterator _Const_iterator; _Iterator __p; _Const_iterator __cp; std::pair<_Iterator,_Iterator> __r; std::pair<_Const_iterator,_Const_iterator> __cr; typename _SortedAssociativeContainer::value_type *__first, *__last; }; // HashedAssociativeContainer} // namespace __gnu_cxx#undef _IsUnused#endif // _GLIBCXX_BOOST_CONCEPT_CHECK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -