A (one dimensional) cellular automaton is a function1 F : Σ → Σ with the property that there is a K > 0 such that F (x)i depends only on the 2K + 1 coordinates xi−K , xi−K+1, . . . , xi−1, xi, xi+1, . . . , xi+K . A periodic point of σ is any x such that σ^p (x) = x for some p ∈ N, and a periodic point of F is any x such that F^q (x) = x for some q ∈ N. Given a cellular automaton F, a point x ∈ Σ is jointly periodic if there are p, q ∈ N such that σ^p (x) = F^q (x) = x, that is, it is a periodic point under both functions.
This project aims to explore the nature of one-dimensional Cellular Automata, in the hope of finding the structure of cellular automata through its periodic points.
LEMMA Research Project / Code / Source code / Program (1) / Program / Source / STL / concept_checks.h
2034 viewsLicense: MIT
ubuntu2004
/*1* Copyright (c) 19992* Silicon Graphics Computer Systems, Inc.3*4* Permission to use, copy, modify, distribute and sell this software5* and its documentation for any purpose is hereby granted without fee,6* provided that the above copyright notice appear in all copies and7* that both that copyright notice and this permission notice appear8* in supporting documentation. Silicon Graphics makes no9* representations about the suitability of this software for any10* purpose. It is provided "as is" without express or implied warranty.11*/1213#ifndef __CONCEPT_CHECKS_H14#define __CONCEPT_CHECKS_H1516/*17Use these macro like assertions, but they assert properties18on types (usually template arguments). In technical terms they19verify whether a type "models" a "concept".2021This set of requirements and the terminology used here is derived22from the book "Generic Programming and the STL" by Matt Austern23(Addison Wesley). For further information please consult that24book. The requirements also are intended to match the ANSI/ISO C++25standard.2627This file covers the basic concepts and the iterator concepts.28There are several other files that provide the requirements29for the STL containers:30container_concepts.h31sequence_concepts.h32assoc_container_concepts.h3334Jeremy Siek, 19993536TO DO:37- some issues with regards to concept classification and mutability38including AssociativeContianer -> ForwardContainer39and SortedAssociativeContainer -> ReversibleContainer40- HashedAssociativeContainer41- Allocator42- Function Object Concepts4344*/4546#ifndef __STL_USE_CONCEPT_CHECKS4748// Some compilers lack the features that are necessary for concept checks.49// On those compilers we define the concept check macros to do nothing.50#define __STL_REQUIRES(__type_var, __concept) do {} while(0)51#define __STL_CLASS_REQUIRES(__type_var, __concept) \52static int __##__type_var##_##__concept53#define __STL_CONVERTIBLE(__type_x, __type_y) do {} while(0)54#define __STL_REQUIRES_SAME_TYPE(__type_x, __type_y) do {} while(0)55#define __STL_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) \56static int __##__type_x##__type_y##_require_same_type57#define __STL_GENERATOR_CHECK(__func, __ret) do {} while(0)58#define __STL_CLASS_GENERATOR_CHECK(__func, __ret) \59static int __##__func##__ret##_generator_check60#define __STL_UNARY_FUNCTION_CHECK(__func, __ret, __arg) do {} while(0)61#define __STL_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \62static int __##__func##__ret##__arg##_unary_function_check63#define __STL_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \64do {} while(0)65#define __STL_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \66static int __##__func##__ret##__first##__second##_binary_function_check67#define __STL_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \68do {} while(0)69#define __STL_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \70static int __##__opname##__ret##__first##__second##_require_binary_op7172#else /* __STL_USE_CONCEPT_CHECKS */7374// This macro tests whether the template argument "__type_var"75// satisfies the requirements of "__concept". Here is a list of concepts76// that we know how to check:77// _Allocator78// _Assignable79// _DefaultConstructible80// _EqualityComparable81// _LessThanComparable82// _TrivialIterator83// _InputIterator84// _OutputIterator85// _ForwardIterator86// _BidirectionalIterator87// _RandomAccessIterator88// _Mutable_TrivialIterator89// _Mutable_ForwardIterator90// _Mutable_BidirectionalIterator91// _Mutable_RandomAccessIterator9293#define __STL_REQUIRES(__type_var, __concept) \94do { \95void (*__x)( __type_var ) = __concept##_concept_specification< __type_var >\96::__concept##_requirement_violation; __x = __x; } while (0)9798// Use this to check whether type X is convertible to type Y99#define __STL_CONVERTIBLE(__type_x, __type_y) \100do { \101void (*__x)( __type_x , __type_y ) = _STL_CONVERT_ERROR< __type_x , \102__type_y >::__type_X_is_not_convertible_to_type_Y; \103__x = __x; } while (0)104105// Use this to test whether two template arguments are the same type106#define __STL_REQUIRES_SAME_TYPE(__type_x, __type_y) \107do { \108void (*__x)( __type_x , __type_y ) = _STL_SAME_TYPE_ERROR< __type_x, \109__type_y >::__type_X_not_same_as_type_Y; \110__x = __x; } while (0)111112113// function object checks114#define __STL_GENERATOR_CHECK(__func, __ret) \115do { \116__ret (*__x)( __func&) = \117_STL_GENERATOR_ERROR< \118__func, __ret>::__generator_requirement_violation; \119__x = __x; } while (0)120121122#define __STL_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \123do { \124__ret (*__x)( __func&, const __arg& ) = \125_STL_UNARY_FUNCTION_ERROR< \126__func, __ret, __arg>::__unary_function_requirement_violation; \127__x = __x; } while (0)128129130#define __STL_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \131do { \132__ret (*__x)( __func&, const __first&, const __second& ) = \133_STL_BINARY_FUNCTION_ERROR< \134__func, __ret, __first, __second>::__binary_function_requirement_violation; \135__x = __x; } while (0)136137138#define __STL_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \139do { \140__ret (*__x)( __first&, __second& ) = _STL_BINARY##__opname##_ERROR< \141__ret, __first, __second>::__binary_operator_requirement_violation; \142__ret (*__y)( const __first&, const __second& ) = \143_STL_BINARY##__opname##_ERROR< __ret, __first, __second>:: \144__const_binary_operator_requirement_violation; \145__y = __y; __x = __x; } while (0)146147148#ifdef __STL_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE149150#define __STL_CLASS_REQUIRES(__type_var, __concept)151#define __STL_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y)152#define __STL_CLASS_GENERATOR_CHECK(__func, __ret)153#define __STL_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg)154#define __STL_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second)155#define __STL_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second)156157#else158159// Use this macro inside of template classes, where you would160// like to place requirements on the template arguments to the class161// Warning: do not pass pointers and such (e.g. T*) in as the __type_var,162// since the type_var is used to construct identifiers. Instead typedef163// the pointer type, then use the typedef name for the __type_var.164#define __STL_CLASS_REQUIRES(__type_var, __concept) \165typedef void (* __func##__type_var##__concept)( __type_var ); \166template <__func##__type_var##__concept _Tp1> \167struct __dummy_struct_##__type_var##__concept { }; \168static __dummy_struct_##__type_var##__concept< \169__concept##_concept_specification< \170__type_var>::__concept##_requirement_violation> \171__dummy_ptr_##__type_var##__concept172173174#define __STL_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) \175typedef void (* __func_##__type_x##__type_y##same_type)( __type_x, \176__type_y ); \177template < __func_##__type_x##__type_y##same_type _Tp1> \178struct __dummy_struct_##__type_x##__type_y##_same_type { }; \179static __dummy_struct_##__type_x##__type_y##_same_type< \180_STL_SAME_TYPE_ERROR<__type_x, __type_y>::__type_X_not_same_as_type_Y> \181__dummy_ptr_##__type_x##__type_y##_same_type182183184#define __STL_CLASS_GENERATOR_CHECK(__func, __ret) \185typedef __ret (* __f_##__func##__ret##_generator)( __func& ); \186template <__f_##__func##__ret##_generator _Tp1> \187struct __dummy_struct_##__func##__ret##_generator { }; \188static __dummy_struct_##__func##__ret##_generator< \189_STL_GENERATOR_ERROR< \190__func, __ret>::__generator_requirement_violation> \191__dummy_ptr_##__func##__ret##_generator192193194#define __STL_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \195typedef __ret (* __f_##__func##__ret##__arg##_unary_check)( __func&, \196const __arg& ); \197template <__f_##__func##__ret##__arg##_unary_check _Tp1> \198struct __dummy_struct_##__func##__ret##__arg##_unary_check { }; \199static __dummy_struct_##__func##__ret##__arg##_unary_check< \200_STL_UNARY_FUNCTION_ERROR< \201__func, __ret, __arg>::__unary_function_requirement_violation> \202__dummy_ptr_##__func##__ret##__arg##_unary_check203204205#define __STL_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \206typedef __ret (* __f_##__func##__ret##__first##__second##_binary_check)( __func&, const __first&,\207const __second& ); \208template <__f_##__func##__ret##__first##__second##_binary_check _Tp1> \209struct __dummy_struct_##__func##__ret##__first##__second##_binary_check { }; \210static __dummy_struct_##__func##__ret##__first##__second##_binary_check< \211_STL_BINARY_FUNCTION_ERROR<__func, __ret, __first, __second>:: \212__binary_function_requirement_violation> \213__dummy_ptr_##__func##__ret##__first##__second##_binary_check214215216#define __STL_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \217typedef __ret (* __f_##__func##__ret##__first##__second##_binary_op)(const __first&, \218const __second& ); \219template <__f_##__func##__ret##__first##__second##_binary_op _Tp1> \220struct __dummy_struct_##__func##__ret##__first##__second##_binary_op { }; \221static __dummy_struct_##__func##__ret##__first##__second##_binary_op< \222_STL_BINARY##__opname##_ERROR<__ret, __first, __second>:: \223__binary_operator_requirement_violation> \224__dummy_ptr_##__func##__ret##__first##__second##_binary_op225226#endif227228/* helper class for finding non-const version of a type. Need to have229something to assign to etc. when testing constant iterators. */230231template <class _Tp>232struct _Mutable_trait {233typedef _Tp _Type;234};235template <class _Tp>236struct _Mutable_trait<const _Tp> {237typedef _Tp _Type;238};239240241/* helper function for avoiding compiler warnings about unused variables */242template <class _Type>243void __sink_unused_warning(_Type) { }244245template <class _TypeX, class _TypeY>246struct _STL_CONVERT_ERROR {247static void248__type_X_is_not_convertible_to_type_Y(_TypeX __x, _TypeY) {249_TypeY __y = __x;250__sink_unused_warning(__y);251}252};253254255template <class _Type> struct __check_equal { };256257template <class _TypeX, class _TypeY>258struct _STL_SAME_TYPE_ERROR {259static void260__type_X_not_same_as_type_Y(_TypeX , _TypeY ) {261__check_equal<_TypeX> t1 = __check_equal<_TypeY>();262}263};264265266// Some Functon Object Checks267268template <class _Func, class _Ret>269struct _STL_GENERATOR_ERROR {270static _Ret __generator_requirement_violation(_Func& __f) {271return __f();272}273};274275template <class _Func>276struct _STL_GENERATOR_ERROR<_Func, void> {277static void __generator_requirement_violation(_Func& __f) {278__f();279}280};281282283template <class _Func, class _Ret, class _Arg>284struct _STL_UNARY_FUNCTION_ERROR {285static _Ret286__unary_function_requirement_violation(_Func& __f,287const _Arg& __arg) {288return __f(__arg);289}290};291292template <class _Func, class _Arg>293struct _STL_UNARY_FUNCTION_ERROR<_Func, void, _Arg> {294static void295__unary_function_requirement_violation(_Func& __f,296const _Arg& __arg) {297__f(__arg);298}299};300301template <class _Func, class _Ret, class _First, class _Second>302struct _STL_BINARY_FUNCTION_ERROR {303static _Ret304__binary_function_requirement_violation(_Func& __f,305const _First& __first,306const _Second& __second) {307return __f(__first, __second);308}309};310311template <class _Func, class _First, class _Second>312struct _STL_BINARY_FUNCTION_ERROR<_Func, void, _First, _Second> {313static void314__binary_function_requirement_violation(_Func& __f,315const _First& __first,316const _Second& __second) {317__f(__first, __second);318}319};320321322#define __STL_DEFINE_BINARY_OP_CHECK(_OP, _NAME) \323template <class _Ret, class _First, class _Second> \324struct _STL_BINARY##_NAME##_ERROR { \325static _Ret \326__const_binary_operator_requirement_violation(const _First& __first, \327const _Second& __second) { \328return __first _OP __second; \329} \330static _Ret \331__binary_operator_requirement_violation(_First& __first, \332_Second& __second) { \333return __first _OP __second; \334} \335}336337__STL_DEFINE_BINARY_OP_CHECK(==, _OP_EQUAL);338__STL_DEFINE_BINARY_OP_CHECK(!=, _OP_NOT_EQUAL);339__STL_DEFINE_BINARY_OP_CHECK(<, _OP_LESS_THAN);340__STL_DEFINE_BINARY_OP_CHECK(<=, _OP_LESS_EQUAL);341__STL_DEFINE_BINARY_OP_CHECK(>, _OP_GREATER_THAN);342__STL_DEFINE_BINARY_OP_CHECK(>=, _OP_GREATER_EQUAL);343__STL_DEFINE_BINARY_OP_CHECK(+, _OP_PLUS);344__STL_DEFINE_BINARY_OP_CHECK(*, _OP_TIMES);345__STL_DEFINE_BINARY_OP_CHECK(/, _OP_DIVIDE);346__STL_DEFINE_BINARY_OP_CHECK(-, _OP_SUBTRACT);347__STL_DEFINE_BINARY_OP_CHECK(%, _OP_MOD);348// ...349350// TODO, add unary operators (prefix and postfix)351352/*353The presence of this class is just to trick EDG into displaying354these error messages before any other errors. Without the355classes, the errors in the functions get reported after356other class errors deep inside the library. The name357choice just makes for an eye catching error message :)358*/359struct _STL_ERROR {360361template <class _Type>362static _Type363__default_constructor_requirement_violation(_Type) {364return _Type();365}366template <class _Type>367static _Type368__assignment_operator_requirement_violation(_Type __a) {369__a = __a;370return __a;371}372template <class _Type>373static _Type374__copy_constructor_requirement_violation(_Type __a) {375_Type __c(__a);376return __c;377}378template <class _Type>379static _Type380__const_parameter_required_for_copy_constructor(_Type /* __a */,381const _Type& __b) {382_Type __c(__b);383return __c;384}385template <class _Type>386static _Type387__const_parameter_required_for_assignment_operator(_Type __a,388const _Type& __b) {389__a = __b;390return __a;391}392template <class _Type>393static _Type394__less_than_comparable_requirement_violation(_Type __a, _Type __b) {395if (__a < __b || __a > __b || __a <= __b || __a >= __b) return __a;396return __b;397}398template <class _Type>399static _Type400__equality_comparable_requirement_violation(_Type __a, _Type __b) {401if (__a == __b || __a != __b) return __a;402return __b;403}404template <class _Iterator>405static void406__dereference_operator_requirement_violation(_Iterator __i) {407__sink_unused_warning(*__i);408}409template <class _Iterator>410static void411__dereference_operator_and_assignment_requirement_violation(_Iterator __i) {412*__i = *__i;413}414template <class _Iterator>415static void416__preincrement_operator_requirement_violation(_Iterator __i) {417++__i;418}419template <class _Iterator>420static void421__postincrement_operator_requirement_violation(_Iterator __i) {422__i++;423}424template <class _Iterator>425static void426__predecrement_operator_requirement_violation(_Iterator __i) {427--__i;428}429template <class _Iterator>430static void431__postdecrement_operator_requirement_violation(_Iterator __i) {432__i--;433}434template <class _Iterator, class _Type>435static void436__postincrement_operator_and_assignment_requirement_violation(_Iterator __i,437_Type __t) {438*__i++ = __t;439}440template <class _Iterator, class _Distance>441static _Iterator442__iterator_addition_assignment_requirement_violation(_Iterator __i,443_Distance __n) {444__i += __n;445return __i;446}447template <class _Iterator, class _Distance>448static _Iterator449__iterator_addition_requirement_violation(_Iterator __i, _Distance __n) {450__i = __i + __n;451__i = __n + __i;452return __i;453}454template <class _Iterator, class _Distance>455static _Iterator456__iterator_subtraction_assignment_requirement_violation(_Iterator __i,457_Distance __n) {458__i -= __n;459return __i;460}461template <class _Iterator, class _Distance>462static _Iterator463__iterator_subtraction_requirement_violation(_Iterator __i, _Distance __n) {464__i = __i - __n;465return __i;466}467template <class _Iterator, class _Distance>468static _Distance469__difference_operator_requirement_violation(_Iterator __i, _Iterator __j,470_Distance __n) {471__n = __i - __j;472return __n;473}474template <class _Exp, class _Type, class _Distance>475static _Type476__element_access_operator_requirement_violation(_Exp __x, _Type*,477_Distance __n) {478return __x[__n];479}480template <class _Exp, class _Type, class _Distance>481static void482__element_assignment_operator_requirement_violation(_Exp __x,483_Type* __t,484_Distance __n) {485__x[__n] = *__t;486}487488}; /* _STL_ERROR */489490/* Associated Type Requirements */491492__STL_BEGIN_NAMESPACE493template <class _Iterator> struct iterator_traits;494__STL_END_NAMESPACE495496template <class _Iter>497struct __value_type_type_definition_requirement_violation {498typedef typename __STD::iterator_traits<_Iter>::value_type value_type;499};500501template <class _Iter>502struct __difference_type_type_definition_requirement_violation {503typedef typename __STD::iterator_traits<_Iter>::difference_type504difference_type;505};506507template <class _Iter>508struct __reference_type_definition_requirement_violation {509typedef typename __STD::iterator_traits<_Iter>::reference reference;510};511512template <class _Iter>513struct __pointer_type_definition_requirement_violation {514typedef typename __STD::iterator_traits<_Iter>::pointer pointer;515};516517template <class _Iter>518struct __iterator_category_type_definition_requirement_violation {519typedef typename __STD::iterator_traits<_Iter>::iterator_category520iterator_category;521};522523/* Assignable Requirements */524525526template <class _Type>527struct _Assignable_concept_specification {528static void _Assignable_requirement_violation(_Type __a) {529_STL_ERROR::__assignment_operator_requirement_violation(__a);530_STL_ERROR::__copy_constructor_requirement_violation(__a);531_STL_ERROR::__const_parameter_required_for_copy_constructor(__a,__a);532_STL_ERROR::__const_parameter_required_for_assignment_operator(__a,__a);533}534};535536/* DefaultConstructible Requirements */537538539template <class _Type>540struct _DefaultConstructible_concept_specification {541static void _DefaultConstructible_requirement_violation(_Type __a) {542_STL_ERROR::__default_constructor_requirement_violation(__a);543}544};545546/* EqualityComparable Requirements */547548template <class _Type>549struct _EqualityComparable_concept_specification {550static void _EqualityComparable_requirement_violation(_Type __a) {551_STL_ERROR::__equality_comparable_requirement_violation(__a, __a);552}553};554555/* LessThanComparable Requirements */556template <class _Type>557struct _LessThanComparable_concept_specification {558static void _LessThanComparable_requirement_violation(_Type __a) {559_STL_ERROR::__less_than_comparable_requirement_violation(__a, __a);560}561};562563/* TrivialIterator Requirements */564565template <class _TrivialIterator>566struct _TrivialIterator_concept_specification {567static void568_TrivialIterator_requirement_violation(_TrivialIterator __i) {569typedef typename570__value_type_type_definition_requirement_violation<_TrivialIterator>::571value_type __T;572// Refinement of Assignable573_Assignable_concept_specification<_TrivialIterator>::574_Assignable_requirement_violation(__i);575// Refinement of DefaultConstructible576_DefaultConstructible_concept_specification<_TrivialIterator>::577_DefaultConstructible_requirement_violation(__i);578// Refinement of EqualityComparable579_EqualityComparable_concept_specification<_TrivialIterator>::580_EqualityComparable_requirement_violation(__i);581// Valid Expressions582_STL_ERROR::__dereference_operator_requirement_violation(__i);583}584};585586template <class _TrivialIterator>587struct _Mutable_TrivialIterator_concept_specification {588static void589_Mutable_TrivialIterator_requirement_violation(_TrivialIterator __i) {590_TrivialIterator_concept_specification<_TrivialIterator>::591_TrivialIterator_requirement_violation(__i);592// Valid Expressions593_STL_ERROR::__dereference_operator_and_assignment_requirement_violation(__i);594}595};596597/* InputIterator Requirements */598599template <class _InputIterator>600struct _InputIterator_concept_specification {601static void602_InputIterator_requirement_violation(_InputIterator __i) {603// Refinement of TrivialIterator604_TrivialIterator_concept_specification<_InputIterator>::605_TrivialIterator_requirement_violation(__i);606// Associated Types607__difference_type_type_definition_requirement_violation<_InputIterator>();608__reference_type_definition_requirement_violation<_InputIterator>();609__pointer_type_definition_requirement_violation<_InputIterator>();610__iterator_category_type_definition_requirement_violation<_InputIterator>();611// Valid Expressions612_STL_ERROR::__preincrement_operator_requirement_violation(__i);613_STL_ERROR::__postincrement_operator_requirement_violation(__i);614}615};616617/* OutputIterator Requirements */618619template <class _OutputIterator>620struct _OutputIterator_concept_specification {621static void622_OutputIterator_requirement_violation(_OutputIterator __i) {623// Refinement of Assignable624_Assignable_concept_specification<_OutputIterator>::625_Assignable_requirement_violation(__i);626// Associated Types627__iterator_category_type_definition_requirement_violation<_OutputIterator>();628// Valid Expressions629_STL_ERROR::__dereference_operator_requirement_violation(__i);630_STL_ERROR::__preincrement_operator_requirement_violation(__i);631_STL_ERROR::__postincrement_operator_requirement_violation(__i);632_STL_ERROR::633__postincrement_operator_and_assignment_requirement_violation(__i, *__i);634}635};636637/* ForwardIterator Requirements */638639template <class _ForwardIterator>640struct _ForwardIterator_concept_specification {641static void642_ForwardIterator_requirement_violation(_ForwardIterator __i) {643// Refinement of InputIterator644_InputIterator_concept_specification<_ForwardIterator>::645_InputIterator_requirement_violation(__i);646}647};648649template <class _ForwardIterator>650struct _Mutable_ForwardIterator_concept_specification {651static void652_Mutable_ForwardIterator_requirement_violation(_ForwardIterator __i) {653_ForwardIterator_concept_specification<_ForwardIterator>::654_ForwardIterator_requirement_violation(__i);655// Refinement of OutputIterator656_OutputIterator_concept_specification<_ForwardIterator>::657_OutputIterator_requirement_violation(__i);658}659};660661/* BidirectionalIterator Requirements */662663template <class _BidirectionalIterator>664struct _BidirectionalIterator_concept_specification {665static void666_BidirectionalIterator_requirement_violation(_BidirectionalIterator __i) {667// Refinement of ForwardIterator668_ForwardIterator_concept_specification<_BidirectionalIterator>::669_ForwardIterator_requirement_violation(__i);670// Valid Expressions671_STL_ERROR::__predecrement_operator_requirement_violation(__i);672_STL_ERROR::__postdecrement_operator_requirement_violation(__i);673}674};675676template <class _BidirectionalIterator>677struct _Mutable_BidirectionalIterator_concept_specification {678static void679_Mutable_BidirectionalIterator_requirement_violation(680_BidirectionalIterator __i)681{682_BidirectionalIterator_concept_specification<_BidirectionalIterator>::683_BidirectionalIterator_requirement_violation(__i);684// Refinement of mutable_ForwardIterator685_Mutable_ForwardIterator_concept_specification<_BidirectionalIterator>::686_Mutable_ForwardIterator_requirement_violation(__i);687typedef typename688__value_type_type_definition_requirement_violation<689_BidirectionalIterator>::value_type __T;690typename _Mutable_trait<__T>::_Type* __tmp_ptr = 0;691// Valid Expressions692_STL_ERROR::693__postincrement_operator_and_assignment_requirement_violation(__i,694*__tmp_ptr);695}696};697698/* RandomAccessIterator Requirements */699700template <class _RandAccIter>701struct _RandomAccessIterator_concept_specification {702static void703_RandomAccessIterator_requirement_violation(_RandAccIter __i) {704// Refinement of BidirectionalIterator705_BidirectionalIterator_concept_specification<_RandAccIter>::706_BidirectionalIterator_requirement_violation(__i);707// Refinement of LessThanComparable708_LessThanComparable_concept_specification<_RandAccIter>::709_LessThanComparable_requirement_violation(__i);710typedef typename711__value_type_type_definition_requirement_violation<_RandAccIter>712::value_type713value_type;714typedef typename715__difference_type_type_definition_requirement_violation<_RandAccIter>716::difference_type717_Dist;718typedef typename _Mutable_trait<_Dist>::_Type _MutDist;719720// Valid Expressions721_STL_ERROR::__iterator_addition_assignment_requirement_violation(__i,722_MutDist());723_STL_ERROR::__iterator_addition_requirement_violation(__i,724_MutDist());725_STL_ERROR::726__iterator_subtraction_assignment_requirement_violation(__i,727_MutDist());728_STL_ERROR::__iterator_subtraction_requirement_violation(__i,729_MutDist());730_STL_ERROR::__difference_operator_requirement_violation(__i, __i,731_MutDist());732typename _Mutable_trait<value_type>::_Type* __dummy_ptr = 0;733_STL_ERROR::__element_access_operator_requirement_violation(__i,734__dummy_ptr,735_MutDist());736}737};738739template <class _RandAccIter>740struct _Mutable_RandomAccessIterator_concept_specification {741static void742_Mutable_RandomAccessIterator_requirement_violation(_RandAccIter __i)743{744_RandomAccessIterator_concept_specification<_RandAccIter>::745_RandomAccessIterator_requirement_violation(__i);746// Refinement of mutable_BidirectionalIterator747_Mutable_BidirectionalIterator_concept_specification<_RandAccIter>::748_Mutable_BidirectionalIterator_requirement_violation(__i);749typedef typename750__value_type_type_definition_requirement_violation<_RandAccIter>751::value_type752value_type;753typedef typename754__difference_type_type_definition_requirement_violation<_RandAccIter>755::difference_type756_Dist;757758typename _Mutable_trait<value_type>::_Type* __tmp_ptr = 0;759// Valid Expressions760_STL_ERROR::__element_assignment_operator_requirement_violation(__i,761__tmp_ptr, _Dist());762}763};764765#define __STL_TYPEDEF_REQUIREMENT(__REQUIREMENT) \766template <class Type> \767struct __##__REQUIREMENT##__typedef_requirement_violation { \768typedef typename Type::__REQUIREMENT __REQUIREMENT; \769}770771__STL_TYPEDEF_REQUIREMENT(value_type);772__STL_TYPEDEF_REQUIREMENT(difference_type);773__STL_TYPEDEF_REQUIREMENT(size_type);774__STL_TYPEDEF_REQUIREMENT(reference);775__STL_TYPEDEF_REQUIREMENT(const_reference);776__STL_TYPEDEF_REQUIREMENT(pointer);777__STL_TYPEDEF_REQUIREMENT(const_pointer);778779780template <class _Alloc>781struct _Allocator_concept_specification {782static void783_Allocator_requirement_violation(_Alloc __a) {784// Refinement of DefaultConstructible785_DefaultConstructible_concept_specification<_Alloc>::786_DefaultConstructible_requirement_violation(__a);787// Refinement of EqualityComparable788_EqualityComparable_concept_specification<_Alloc>::789_EqualityComparable_requirement_violation(__a);790// Associated Types791__value_type__typedef_requirement_violation<_Alloc>();792__difference_type__typedef_requirement_violation<_Alloc>();793__size_type__typedef_requirement_violation<_Alloc>();794__reference__typedef_requirement_violation<_Alloc>();795__const_reference__typedef_requirement_violation<_Alloc>();796__pointer__typedef_requirement_violation<_Alloc>();797__const_pointer__typedef_requirement_violation<_Alloc>();798typedef typename _Alloc::value_type _Tp;799//__STL_REQUIRES_SAME_TYPE(typename _Alloc::__STL_TEMPLATE rebind<_Tp>::other,800// _Alloc);801}802};803804#endif /* __STL_USE_CONCEPT_CHECKS */805806#endif /* __CONCEPT_CHECKS_H */807808// Local Variables:809// mode:C++810// End:811812813