⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boost_concept_check.h

📁 mingw32.rar
💻 H
📖 第 1 页 / 共 3 页
字号:
      __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),
        __c2 _IsUnused(__n, __t),
        __c3 _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 + -