📄 concept_checks.h
字号:
__dereference_operator_requirement_violation(_Iterator __i) { __sink_unused_warning(*__i); } template <class _Iterator> static void __dereference_operator_and_assignment_requirement_violation(_Iterator __i) { *__i = *__i; } template <class _Iterator> static void __preincrement_operator_requirement_violation(_Iterator __i) { ++__i; } template <class _Iterator> static void __postincrement_operator_requirement_violation(_Iterator __i) { __i++; } template <class _Iterator> static void __predecrement_operator_requirement_violation(_Iterator __i) { --__i; } template <class _Iterator> static void __postdecrement_operator_requirement_violation(_Iterator __i) { __i--; } template <class _Iterator, class _Type> static void __postincrement_operator_and_assignment_requirement_violation(_Iterator __i, _Type __t) { *__i++ = __t; } template <class _Iterator, class _Distance> static _Iterator __iterator_addition_assignment_requirement_violation(_Iterator __i, _Distance __n) { __i += __n; return __i; } template <class _Iterator, class _Distance> static _Iterator __iterator_addition_requirement_violation(_Iterator __i, _Distance __n) { __i = __i + __n; __i = __n + __i; return __i; } template <class _Iterator, class _Distance> static _Iterator __iterator_subtraction_assignment_requirement_violation(_Iterator __i, _Distance __n) { __i -= __n; return __i; } template <class _Iterator, class _Distance> static _Iterator __iterator_subtraction_requirement_violation(_Iterator __i, _Distance __n) { __i = __i - __n; return __i; } template <class _Iterator, class _Distance> static _Distance __difference_operator_requirement_violation(_Iterator __i, _Iterator __j, _Distance __n) { __n = __i - __j; return __n; } template <class _Exp, class _Type, class _Distance> static _Type __element_access_operator_requirement_violation(_Exp __x, _Type*, _Distance __n) { return __x[__n]; } template <class _Exp, class _Type, class _Distance> static void __element_assignment_operator_requirement_violation(_Exp __x, _Type* __t, _Distance __n) { __x[__n] = *__t; }}; /* _STL_ERROR *//* Associated Type Requirements */__STL_BEGIN_NAMESPACEtemplate <class _Iterator> struct iterator_traits;__STL_END_NAMESPACEtemplate <class _Iter> struct __value_type_type_definition_requirement_violation { typedef typename __STD::iterator_traits<_Iter>::value_type value_type;};template <class _Iter> struct __difference_type_type_definition_requirement_violation { typedef typename __STD::iterator_traits<_Iter>::difference_type difference_type;};template <class _Iter> struct __reference_type_definition_requirement_violation { typedef typename __STD::iterator_traits<_Iter>::reference reference;};template <class _Iter> struct __pointer_type_definition_requirement_violation { typedef typename __STD::iterator_traits<_Iter>::pointer pointer;};template <class _Iter> struct __iterator_category_type_definition_requirement_violation { typedef typename __STD::iterator_traits<_Iter>::iterator_category iterator_category;};/* Assignable Requirements */template <class _Type>struct _Assignable_concept_specification { static void _Assignable_requirement_violation(_Type __a) { _STL_ERROR::__assignment_operator_requirement_violation(__a); _STL_ERROR::__copy_constructor_requirement_violation(__a); _STL_ERROR::__const_parameter_required_for_copy_constructor(__a,__a); _STL_ERROR::__const_parameter_required_for_assignment_operator(__a,__a); }};/* DefaultConstructible Requirements */template <class _Type>struct _DefaultConstructible_concept_specification { static void _DefaultConstructible_requirement_violation(_Type __a) { _STL_ERROR::__default_constructor_requirement_violation(__a); }};/* EqualityComparable Requirements */template <class _Type>struct _EqualityComparable_concept_specification { static void _EqualityComparable_requirement_violation(_Type __a) { _STL_ERROR::__equality_comparable_requirement_violation(__a, __a); }};/* LessThanComparable Requirements */template <class _Type>struct _LessThanComparable_concept_specification { static void _LessThanComparable_requirement_violation(_Type __a) { _STL_ERROR::__less_than_comparable_requirement_violation(__a, __a); }};/* TrivialIterator Requirements */template <class _TrivialIterator>struct _TrivialIterator_concept_specification {static void_TrivialIterator_requirement_violation(_TrivialIterator __i) { typedef typename __value_type_type_definition_requirement_violation<_TrivialIterator>:: value_type __T; // Refinement of Assignable _Assignable_concept_specification<_TrivialIterator>:: _Assignable_requirement_violation(__i); // Refinement of DefaultConstructible _DefaultConstructible_concept_specification<_TrivialIterator>:: _DefaultConstructible_requirement_violation(__i); // Refinement of EqualityComparable _EqualityComparable_concept_specification<_TrivialIterator>:: _EqualityComparable_requirement_violation(__i); // Valid Expressions _STL_ERROR::__dereference_operator_requirement_violation(__i);}};template <class _TrivialIterator>struct _Mutable_TrivialIterator_concept_specification {static void_Mutable_TrivialIterator_requirement_violation(_TrivialIterator __i) { _TrivialIterator_concept_specification<_TrivialIterator>:: _TrivialIterator_requirement_violation(__i); // Valid Expressions _STL_ERROR::__dereference_operator_and_assignment_requirement_violation(__i);}};/* InputIterator Requirements */template <class _InputIterator>struct _InputIterator_concept_specification {static void_InputIterator_requirement_violation(_InputIterator __i) { // Refinement of TrivialIterator _TrivialIterator_concept_specification<_InputIterator>:: _TrivialIterator_requirement_violation(__i); // Associated Types __difference_type_type_definition_requirement_violation<_InputIterator>(); __reference_type_definition_requirement_violation<_InputIterator>(); __pointer_type_definition_requirement_violation<_InputIterator>(); __iterator_category_type_definition_requirement_violation<_InputIterator>(); // Valid Expressions _STL_ERROR::__preincrement_operator_requirement_violation(__i); _STL_ERROR::__postincrement_operator_requirement_violation(__i);}};/* OutputIterator Requirements */template <class _OutputIterator>struct _OutputIterator_concept_specification {static void_OutputIterator_requirement_violation(_OutputIterator __i) { // Refinement of Assignable _Assignable_concept_specification<_OutputIterator>:: _Assignable_requirement_violation(__i); // Associated Types __iterator_category_type_definition_requirement_violation<_OutputIterator>(); // Valid Expressions _STL_ERROR::__dereference_operator_requirement_violation(__i); _STL_ERROR::__preincrement_operator_requirement_violation(__i); _STL_ERROR::__postincrement_operator_requirement_violation(__i); _STL_ERROR:: __postincrement_operator_and_assignment_requirement_violation(__i, *__i);}};/* ForwardIterator Requirements */template <class _ForwardIterator>struct _ForwardIterator_concept_specification {static void_ForwardIterator_requirement_violation(_ForwardIterator __i) { // Refinement of InputIterator _InputIterator_concept_specification<_ForwardIterator>:: _InputIterator_requirement_violation(__i);}};template <class _ForwardIterator>struct _Mutable_ForwardIterator_concept_specification {static void_Mutable_ForwardIterator_requirement_violation(_ForwardIterator __i) { _ForwardIterator_concept_specification<_ForwardIterator>:: _ForwardIterator_requirement_violation(__i); // Refinement of OutputIterator _OutputIterator_concept_specification<_ForwardIterator>:: _OutputIterator_requirement_violation(__i);}};/* BidirectionalIterator Requirements */template <class _BidirectionalIterator>struct _BidirectionalIterator_concept_specification {static void_BidirectionalIterator_requirement_violation(_BidirectionalIterator __i) { // Refinement of ForwardIterator _ForwardIterator_concept_specification<_BidirectionalIterator>:: _ForwardIterator_requirement_violation(__i); // Valid Expressions _STL_ERROR::__predecrement_operator_requirement_violation(__i); _STL_ERROR::__postdecrement_operator_requirement_violation(__i);}};template <class _BidirectionalIterator>struct _Mutable_BidirectionalIterator_concept_specification {static void_Mutable_BidirectionalIterator_requirement_violation( _BidirectionalIterator __i){ _BidirectionalIterator_concept_specification<_BidirectionalIterator>:: _BidirectionalIterator_requirement_violation(__i); // Refinement of mutable_ForwardIterator _Mutable_ForwardIterator_concept_specification<_BidirectionalIterator>:: _Mutable_ForwardIterator_requirement_violation(__i); typedef typename __value_type_type_definition_requirement_violation< _BidirectionalIterator>::value_type __T; typename _Mutable_trait<__T>::_Type* __tmp_ptr = 0; // Valid Expressions _STL_ERROR:: __postincrement_operator_and_assignment_requirement_violation(__i, *__tmp_ptr);}};/* RandomAccessIterator Requirements */template <class _RandAccIter>struct _RandomAccessIterator_concept_specification {static void_RandomAccessIterator_requirement_violation(_RandAccIter __i) { // Refinement of BidirectionalIterator _BidirectionalIterator_concept_specification<_RandAccIter>:: _BidirectionalIterator_requirement_violation(__i); // Refinement of LessThanComparable _LessThanComparable_concept_specification<_RandAccIter>:: _LessThanComparable_requirement_violation(__i); typedef typename __value_type_type_definition_requirement_violation<_RandAccIter> ::value_type value_type; typedef typename __difference_type_type_definition_requirement_violation<_RandAccIter> ::difference_type _Dist; typedef typename _Mutable_trait<_Dist>::_Type _MutDist; // Valid Expressions _STL_ERROR::__iterator_addition_assignment_requirement_violation(__i, _MutDist()); _STL_ERROR::__iterator_addition_requirement_violation(__i, _MutDist()); _STL_ERROR:: __iterator_subtraction_assignment_requirement_violation(__i, _MutDist()); _STL_ERROR::__iterator_subtraction_requirement_violation(__i, _MutDist()); _STL_ERROR::__difference_operator_requirement_violation(__i, __i, _MutDist()); typename _Mutable_trait<value_type>::_Type* __dummy_ptr = 0; _STL_ERROR::__element_access_operator_requirement_violation(__i, __dummy_ptr, _MutDist());}};template <class _RandAccIter>struct _Mutable_RandomAccessIterator_concept_specification {static void_Mutable_RandomAccessIterator_requirement_violation(_RandAccIter __i){ _RandomAccessIterator_concept_specification<_RandAccIter>:: _RandomAccessIterator_requirement_violation(__i); // Refinement of mutable_BidirectionalIterator _Mutable_BidirectionalIterator_concept_specification<_RandAccIter>:: _Mutable_BidirectionalIterator_requirement_violation(__i); typedef typename __value_type_type_definition_requirement_violation<_RandAccIter> ::value_type value_type; typedef typename __difference_type_type_definition_requirement_violation<_RandAccIter> ::difference_type _Dist; typename _Mutable_trait<value_type>::_Type* __tmp_ptr = 0; // Valid Expressions _STL_ERROR::__element_assignment_operator_requirement_violation(__i, __tmp_ptr, _Dist());}};#define __STL_TYPEDEF_REQUIREMENT(__REQUIREMENT) \template <class Type> \struct __##__REQUIREMENT##__typedef_requirement_violation { \ typedef typename Type::__REQUIREMENT __REQUIREMENT; \}__STL_TYPEDEF_REQUIREMENT(value_type);__STL_TYPEDEF_REQUIREMENT(difference_type);__STL_TYPEDEF_REQUIREMENT(size_type);__STL_TYPEDEF_REQUIREMENT(reference);__STL_TYPEDEF_REQUIREMENT(const_reference);__STL_TYPEDEF_REQUIREMENT(pointer);__STL_TYPEDEF_REQUIREMENT(const_pointer);template <class _Alloc>struct _Allocator_concept_specification {static void_Allocator_requirement_violation(_Alloc __a) { // Refinement of DefaultConstructible _DefaultConstructible_concept_specification<_Alloc>:: _DefaultConstructible_requirement_violation(__a); // Refinement of EqualityComparable _EqualityComparable_concept_specification<_Alloc>:: _EqualityComparable_requirement_violation(__a); // Associated Types __value_type__typedef_requirement_violation<_Alloc>(); __difference_type__typedef_requirement_violation<_Alloc>(); __size_type__typedef_requirement_violation<_Alloc>(); __reference__typedef_requirement_violation<_Alloc>(); __const_reference__typedef_requirement_violation<_Alloc>(); __pointer__typedef_requirement_violation<_Alloc>(); __const_pointer__typedef_requirement_violation<_Alloc>(); typedef typename _Alloc::value_type _Tp; //__STL_REQUIRES_SAME_TYPE(typename _Alloc::__STL_TEMPLATE rebind<_Tp>::other, // _Alloc);}};#endif /* __STL_USE_CONCEPT_CHECKS */#endif /* __CONCEPT_CHECKS_H */// Local Variables:// mode:C++// End:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -