19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use, copy, modify, distribute and sell this software 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * and its documentation for any purpose is hereby granted without fee, 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided that the above copyright notice appear in all copies and 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * that both that copyright notice and this permission notice appear 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * in supporting documentation. Silicon Graphics makes no 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * representations about the suitability of this software for any 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * purpose. It is provided "as is" without express or implied warranty. 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef __CONCEPT_CHECKS_H 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define __CONCEPT_CHECKS_H 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Use these macro like assertions, but they assert properties 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block on types (usually template arguments). In technical terms they 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block verify whether a type "models" a "concept". 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block This set of requirements and the terminology used here is derived 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block from the book "Generic Programming and the STL" by Matt Austern 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block (Addison Wesley). For further information please consult that 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block book. The requirements also are intended to match the ANSI/ISO C++ 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block standard. 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block This file covers the basic concepts and the iterator concepts. 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block There are several other files that provide the requirements 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block for the STL containers: 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block container_concepts.h 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block sequence_concepts.h 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block assoc_container_concepts.h 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block Jeremy Siek, 1999 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block TO DO: 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block - some issues with regards to concept classification and mutability 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block including AssociativeContianer -> ForwardContainer 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block and SortedAssociativeContainer -> ReversibleContainer 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block - HashedAssociativeContainer 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block - Allocator 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block - Function Object Concepts 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_USE_CONCEPT_CHECKS 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Some compilers lack the features that are necessary for concept checks. 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// On those compilers we define the concept check macros to do nothing. 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_REQUIRES(__type_var, __concept) do {} while(0) 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_REQUIRES(__type_var, __concept) \ 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static int __##__type_var##_##__concept 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CONVERTIBLE(__type_x, __type_y) do {} while(0) 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_REQUIRES_SAME_TYPE(__type_x, __type_y) do {} while(0) 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) \ 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static int __##__type_x##__type_y##_require_same_type 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_GENERATOR_CHECK(__func, __ret) do {} while(0) 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret) \ 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static int __##__func##__ret##_generator_check 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_UNARY_FUNCTION_CHECK(__func, __ret, __arg) do {} while(0) 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \ 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static int __##__func##__ret##__arg##_unary_function_check 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \ 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block do {} while(0) 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \ 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static int __##__func##__ret##__first##__second##_binary_function_check 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \ 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block do {} while(0) 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \ 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static int __##__opname##__ret##__first##__second##_require_binary_op 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else /* _STLP_USE_CONCEPT_CHECKS */ 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This macro tests whether the template argument "__type_var" 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// satisfies the requirements of "__concept". Here is a list of concepts 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// that we know how to check: 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _Allocator 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _Assignable 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _DefaultConstructible 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _EqualityComparable 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _LessThanComparable 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _TrivialIterator 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _InputIterator 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _OutputIterator 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _ForwardIterator 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _BidirectionalIterator 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _RandomAccessIterator 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _Mutable_TrivialIterator 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _Mutable_ForwardIterator 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _Mutable_BidirectionalIterator 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _Mutable_RandomAccessIterator 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_REQUIRES(__type_var, __concept) \ 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockdo { \ 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void (*__x)( __type_var ) = __concept##_concept_specification< __type_var >\ 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ::##__concept##_requirement_violation; __x = __x; } while (0) 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Use this to check whether type X is convertible to type Y 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CONVERTIBLE(__type_x, __type_y) \ 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockdo { \ 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void (*__x)( __type_x , __type_y ) = _STL_CONVERT_ERROR< __type_x , \ 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __type_y >::__type_X_is_not_convertible_to_type_Y; \ 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x = __x; } while (0) 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Use this to test whether two template arguments are the same type 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_REQUIRES_SAME_TYPE(__type_x, __type_y) \ 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockdo { \ 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void (*__x)( __type_x , __type_y ) = _STL_SAME_TYPE_ERROR< __type_x, \ 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __type_y >::__type_X_not_same_as_type_Y; \ 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x = __x; } while (0) 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// function object checks 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_GENERATOR_CHECK(__func, __ret) \ 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockdo { \ 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ret (*__x)( __func&) = \ 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_GENERATOR_ERROR< \ 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __func, __ret>::__generator_requirement_violation; \ 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x = __x; } while (0) 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \ 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockdo { \ 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ret (*__x)( __func&, const __arg& ) = \ 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_UNARY_FUNCTION_ERROR< \ 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __func, __ret, __arg>::__unary_function_requirement_violation; \ 1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x = __x; } while (0) 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \ 1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockdo { \ 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ret (*__x)( __func&, const __first&, const __second& ) = \ 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_BINARY_FUNCTION_ERROR< \ 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __func, __ret, __first, __second>::__binary_function_requirement_violation; \ 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x = __x; } while (0) 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \ 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block do { \ 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ret (*__x)( __first&, __second& ) = _STL_BINARY##__opname##_ERROR< \ 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ret, __first, __second>::__binary_operator_requirement_violation; \ 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __ret (*__y)( const __first&, const __second& ) = \ 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_BINARY##__opname##_ERROR< __ret, __first, __second>:: \ 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __const_binary_operator_requirement_violation; \ 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __y = __y; __x = __x; } while (0) 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_REQUIRES(__type_var, __concept) 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret) 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Use this macro inside of template classes, where you would 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// like to place requirements on the template arguments to the class 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Warning: do not pass pointers and such (e.g. T*) in as the __type_var, 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// since the type_var is used to construct identifiers. Instead typedef 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// the pointer type, then use the typedef name for the __type_var. 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_REQUIRES(__type_var, __concept) \ 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (* __func##__type_var##__concept)( __type_var ); \ 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <__func##__type_var##__concept _Tp1> \ 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block struct __dummy_struct_##__type_var##__concept { }; \ 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static __dummy_struct_##__type_var##__concept< \ 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __concept##_concept_specification< \ 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __type_var>::__concept##_requirement_violation> \ 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __dummy_ptr_##__type_var##__concept 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) \ 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (* __func_##__type_x##__type_y##same_type)( __type_x, \ 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __type_y ); \ 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template < __func_##__type_x##__type_y##same_type _Tp1> \ 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block struct __dummy_struct_##__type_x##__type_y##_same_type { }; \ 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static __dummy_struct_##__type_x##__type_y##_same_type< \ 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_SAME_TYPE_ERROR<__type_x, __type_y>::__type_X_not_same_as_type_Y> \ 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __dummy_ptr_##__type_x##__type_y##_same_type 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret) \ 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef __ret (* __f_##__func##__ret##_generator)( __func& ); \ 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <__f_##__func##__ret##_generator _Tp1> \ 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block struct __dummy_struct_##__func##__ret##_generator { }; \ 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static __dummy_struct_##__func##__ret##_generator< \ 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_GENERATOR_ERROR< \ 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __func, __ret>::__generator_requirement_violation> \ 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __dummy_ptr_##__func##__ret##_generator 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \ 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef __ret (* __f_##__func##__ret##__arg##_unary_check)( __func&, \ 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const __arg& ); \ 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <__f_##__func##__ret##__arg##_unary_check _Tp1> \ 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block struct __dummy_struct_##__func##__ret##__arg##_unary_check { }; \ 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static __dummy_struct_##__func##__ret##__arg##_unary_check< \ 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_UNARY_FUNCTION_ERROR< \ 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __func, __ret, __arg>::__unary_function_requirement_violation> \ 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __dummy_ptr_##__func##__ret##__arg##_unary_check 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \ 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef __ret (* __f_##__func##__ret##__first##__second##_binary_check)( __func&, const __first&,\ 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const __second& ); \ 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <__f_##__func##__ret##__first##__second##_binary_check _Tp1> \ 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block struct __dummy_struct_##__func##__ret##__first##__second##_binary_check { }; \ 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static __dummy_struct_##__func##__ret##__first##__second##_binary_check< \ 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_BINARY_FUNCTION_ERROR<__func, __ret, __first, __second>:: \ 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __binary_function_requirement_violation> \ 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __dummy_ptr_##__func##__ret##__first##__second##_binary_check 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \ 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef __ret (* __f_##__func##__ret##__first##__second##_binary_op)(const __first&, \ 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const __second& ); \ 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <__f_##__func##__ret##__first##__second##_binary_op _Tp1> \ 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block struct __dummy_struct_##__func##__ret##__first##__second##_binary_op { }; \ 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static __dummy_struct_##__func##__ret##__first##__second##_binary_op< \ 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_BINARY##__opname##_ERROR<__ret, __first, __second>:: \ 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __binary_operator_requirement_violation> \ 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __dummy_ptr_##__func##__ret##__first##__second##_binary_op 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* helper class for finding non-const version of a type. Need to have 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block something to assign to etc. when testing constant iterators. */ 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp> 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Mutable_trait { 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Tp _Type; 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp> 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Mutable_trait<const _Tp> { 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Tp _Type; 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* helper function for avoiding compiler warnings about unused variables */ 2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Type> 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvoid __sink_unused_warning(_Type) { } 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _TypeX, class _TypeY> 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _STL_CONVERT_ERROR { 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __type_X_is_not_convertible_to_type_Y(_TypeX __x, _TypeY) { 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _TypeY __y = __x; 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __sink_unused_warning(__y); 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Type> struct __check_equal { }; 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _TypeX, class _TypeY> 2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _STL_SAME_TYPE_ERROR { 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __type_X_not_same_as_type_Y(_TypeX , _TypeY ) { 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __check_equal<_TypeX> t1 = __check_equal<_TypeY>(); 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Some Functon Object Checks 2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Func, class _Ret> 2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _STL_GENERATOR_ERROR { 2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Ret __generator_requirement_violation(_Func& __f) { 2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __f(); 2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Func> 2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _STL_GENERATOR_ERROR<_Func, void> { 2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void __generator_requirement_violation(_Func& __f) { 2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __f(); 2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Func, class _Ret, class _Arg> 2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _STL_UNARY_FUNCTION_ERROR { 2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Ret 2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __unary_function_requirement_violation(_Func& __f, 2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _Arg& __arg) { 2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __f(__arg); 2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Func, class _Arg> 2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _STL_UNARY_FUNCTION_ERROR<_Func, void, _Arg> { 2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __unary_function_requirement_violation(_Func& __f, 2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _Arg& __arg) { 2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __f(__arg); 2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Func, class _Ret, class _First, class _Second> 3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _STL_BINARY_FUNCTION_ERROR { 3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Ret 3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __binary_function_requirement_violation(_Func& __f, 3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _First& __first, 3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _Second& __second) { 3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __f(__first, __second); 3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Func, class _First, class _Second> 3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _STL_BINARY_FUNCTION_ERROR<_Func, void, _First, _Second> { 3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __binary_function_requirement_violation(_Func& __f, 3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _First& __first, 3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _Second& __second) { 3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __f(__first, __second); 3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_DEFINE_BINARY_OP_CHECK(_OP, _NAME) \ 3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _First, class _Second> \ 3259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _STL_BINARY##_NAME##_ERROR { \ 3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Ret \ 3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __const_binary_operator_requirement_violation(const _First& __first, \ 3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _Second& __second) { \ 3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __first _OP __second; \ 3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } \ 3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Ret \ 3329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __binary_operator_requirement_violation(_First& __first, \ 3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Second& __second) { \ 3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __first _OP __second; \ 3359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } \ 3369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 3379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(==, _OP_EQUAL); 3399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(!=, _OP_NOT_EQUAL); 3409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(<, _OP_LESS_THAN); 3419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(<=, _OP_LESS_EQUAL); 3429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(>, _OP_GREATER_THAN); 3439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(>=, _OP_GREATER_EQUAL); 3449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(+, _OP_PLUS); 3459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(*, _OP_TIMES); 3469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(/, _OP_DIVIDE); 3479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(-, _OP_SUBTRACT); 3489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_DEFINE_BINARY_OP_CHECK(%, _OP_MOD); 3499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// ... 3509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// TODO, add unary operators (prefix and postfix) 3529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 3549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block The presence of this class is just to trick EDG into displaying 3559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block these error messages before any other errors. Without the 3569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block classes, the errors in the functions get reported after 3579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block other class errors deep inside the library. The name 3589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block choice just makes for an eye catching error message :) 3599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 3609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _STL_ERROR { 3619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Type> 3639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Type 3649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __default_constructor_requirement_violation(_Type) { 3659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _Type(); 3669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Type> 3689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Type 3699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __assignment_operator_requirement_violation(_Type __a) { 3709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __a = __a; 3719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __a; 3729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Type> 3749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Type 3759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __copy_constructor_requirement_violation(_Type __a) { 3769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Type __c(__a); 3779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __c; 3789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Type> 3809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Type 3819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __const_parameter_required_for_copy_constructor(_Type /* __a */, 3829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _Type& __b) { 3839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Type __c(__b); 3849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __c; 3859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Type> 3879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Type 3889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __const_parameter_required_for_assignment_operator(_Type __a, 3899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _Type& __b) { 3909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __a = __b; 3919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __a; 3929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Type> 3949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Type 3959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __less_than_comparable_requirement_violation(_Type __a, _Type __b) { 3969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__a < __b || __a > __b || __a <= __b || __a >= __b) return __a; 3979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __b; 3989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Type> 4009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Type 4019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __equality_comparable_requirement_violation(_Type __a, _Type __b) { 4029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__a == __b || __a != __b) return __a; 4039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __b; 4049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator> 4069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 4079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __dereference_operator_requirement_violation(_Iterator __i) { 4089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __sink_unused_warning(*__i); 4099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator> 4119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 4129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __dereference_operator_and_assignment_requirement_violation(_Iterator __i) { 4139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *__i = *__i; 4149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator> 4169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 4179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __preincrement_operator_requirement_violation(_Iterator __i) { 4189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__i; 4199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator> 4219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 4229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __postincrement_operator_requirement_violation(_Iterator __i) { 4239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __i++; 4249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator> 4269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 4279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __predecrement_operator_requirement_violation(_Iterator __i) { 4289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block --__i; 4299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator> 4319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 4329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __postdecrement_operator_requirement_violation(_Iterator __i) { 4339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __i--; 4349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator, class _Type> 4369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 4379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __postincrement_operator_and_assignment_requirement_violation(_Iterator __i, 4389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Type __t) { 4399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *__i++ = __t; 4409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator, class _Distance> 4429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Iterator 4439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __iterator_addition_assignment_requirement_violation(_Iterator __i, 4449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Distance __n) { 4459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __i += __n; 4469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __i; 4479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator, class _Distance> 4499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Iterator 4509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __iterator_addition_requirement_violation(_Iterator __i, _Distance __n) { 4519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __i = __i + __n; 4529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __i = __n + __i; 4539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __i; 4549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator, class _Distance> 4569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Iterator 4579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __iterator_subtraction_assignment_requirement_violation(_Iterator __i, 4589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Distance __n) { 4599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __i -= __n; 4609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __i; 4619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator, class _Distance> 4639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Iterator 4649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __iterator_subtraction_requirement_violation(_Iterator __i, _Distance __n) { 4659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __i = __i - __n; 4669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __i; 4679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator, class _Distance> 4699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Distance 4709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __difference_operator_requirement_violation(_Iterator __i, _Iterator __j, 4719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Distance __n) { 4729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __n = __i - __j; 4739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __n; 4749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Exp, class _Type, class _Distance> 4769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static _Type 4779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __element_access_operator_requirement_violation(_Exp __x, _Type*, 4789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Distance __n) { 4799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __x[__n]; 4809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Exp, class _Type, class _Distance> 4829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void 4839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __element_assignment_operator_requirement_violation(_Exp __x, 4849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Type* __t, 4859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Distance __n) { 4869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x[__n] = *__t; 4879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; /* _STL_ERROR */ 4909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Associated Type Requirements */ 4929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 4949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Iterator> struct iterator_traits; 4959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 4969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Iter> 4989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct __value_type_type_definition_requirement_violation { 4999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename __STD::iterator_traits<_Iter>::value_type value_type; 5009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Iter> 5039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct __difference_type_type_definition_requirement_violation { 5049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename __STD::iterator_traits<_Iter>::difference_type 5059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block difference_type; 5069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Iter> 5099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct __reference_type_definition_requirement_violation { 5109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename __STD::iterator_traits<_Iter>::reference reference; 5119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Iter> 5149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct __pointer_type_definition_requirement_violation { 5159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename __STD::iterator_traits<_Iter>::pointer pointer; 5169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Iter> 5199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct __iterator_category_type_definition_requirement_violation { 5209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename __STD::iterator_traits<_Iter>::iterator_category 5219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator_category; 5229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Assignable Requirements */ 5259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Type> 5289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Assignable_concept_specification { 5299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void _Assignable_requirement_violation(_Type __a) { 5309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__assignment_operator_requirement_violation(__a); 5319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__copy_constructor_requirement_violation(__a); 5329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__const_parameter_required_for_copy_constructor(__a,__a); 5339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__const_parameter_required_for_assignment_operator(__a,__a); 5349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* DefaultConstructible Requirements */ 5389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Type> 5419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _DefaultConstructible_concept_specification { 5429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void _DefaultConstructible_requirement_violation(_Type __a) { 5439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__default_constructor_requirement_violation(__a); 5449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* EqualityComparable Requirements */ 5489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Type> 5509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _EqualityComparable_concept_specification { 5519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void _EqualityComparable_requirement_violation(_Type __a) { 5529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__equality_comparable_requirement_violation(__a, __a); 5539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* LessThanComparable Requirements */ 5579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Type> 5589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _LessThanComparable_concept_specification { 5599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static void _LessThanComparable_requirement_violation(_Type __a) { 5609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__less_than_comparable_requirement_violation(__a, __a); 5619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* TrivialIterator Requirements */ 5659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _TrivialIterator> 5679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _TrivialIterator_concept_specification { 5689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 5699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_TrivialIterator_requirement_violation(_TrivialIterator __i) { 5709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 5719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __value_type_type_definition_requirement_violation<_TrivialIterator>:: 5729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block value_type __T; 5739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of Assignable 5749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Assignable_concept_specification<_TrivialIterator>:: 5759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Assignable_requirement_violation(__i); 5769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of DefaultConstructible 5779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _DefaultConstructible_concept_specification<_TrivialIterator>:: 5789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _DefaultConstructible_requirement_violation(__i); 5799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of EqualityComparable 5809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _EqualityComparable_concept_specification<_TrivialIterator>:: 5819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _EqualityComparable_requirement_violation(__i); 5829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Valid Expressions 5839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__dereference_operator_requirement_violation(__i); 5849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 5859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _TrivialIterator> 5889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Mutable_TrivialIterator_concept_specification { 5899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 5909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_Mutable_TrivialIterator_requirement_violation(_TrivialIterator __i) { 5919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _TrivialIterator_concept_specification<_TrivialIterator>:: 5929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _TrivialIterator_requirement_violation(__i); 5939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Valid Expressions 5949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__dereference_operator_and_assignment_requirement_violation(__i); 5959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 5969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* InputIterator Requirements */ 5999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _InputIterator> 6019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _InputIterator_concept_specification { 6029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 6039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_InputIterator_requirement_violation(_InputIterator __i) { 6049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of TrivialIterator 6059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _TrivialIterator_concept_specification<_InputIterator>:: 6069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _TrivialIterator_requirement_violation(__i); 6079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Associated Types 6089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __difference_type_type_definition_requirement_violation<_InputIterator>(); 6099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __reference_type_definition_requirement_violation<_InputIterator>(); 6109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __pointer_type_definition_requirement_violation<_InputIterator>(); 6119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __iterator_category_type_definition_requirement_violation<_InputIterator>(); 6129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Valid Expressions 6139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__preincrement_operator_requirement_violation(__i); 6149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__postincrement_operator_requirement_violation(__i); 6159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 6169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* OutputIterator Requirements */ 6199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _OutputIterator> 6219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _OutputIterator_concept_specification { 6229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 6239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_OutputIterator_requirement_violation(_OutputIterator __i) { 6249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of Assignable 6259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Assignable_concept_specification<_OutputIterator>:: 6269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Assignable_requirement_violation(__i); 6279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Associated Types 6289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __iterator_category_type_definition_requirement_violation<_OutputIterator>(); 6299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Valid Expressions 6309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__dereference_operator_requirement_violation(__i); 6319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__preincrement_operator_requirement_violation(__i); 6329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__postincrement_operator_requirement_violation(__i); 6339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR:: 6349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __postincrement_operator_and_assignment_requirement_violation(__i, *__i); 6359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 6369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* ForwardIterator Requirements */ 6399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _ForwardIterator> 6419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _ForwardIterator_concept_specification { 6429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 6439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_ForwardIterator_requirement_violation(_ForwardIterator __i) { 6449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of InputIterator 6459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _InputIterator_concept_specification<_ForwardIterator>:: 6469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _InputIterator_requirement_violation(__i); 6479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 6489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _ForwardIterator> 6519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Mutable_ForwardIterator_concept_specification { 6529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 6539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_Mutable_ForwardIterator_requirement_violation(_ForwardIterator __i) { 6549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _ForwardIterator_concept_specification<_ForwardIterator>:: 6559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _ForwardIterator_requirement_violation(__i); 6569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of OutputIterator 6579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _OutputIterator_concept_specification<_ForwardIterator>:: 6589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _OutputIterator_requirement_violation(__i); 6599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 6609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* BidirectionalIterator Requirements */ 6639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _BidirectionalIterator> 6659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _BidirectionalIterator_concept_specification { 6669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 6679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_BidirectionalIterator_requirement_violation(_BidirectionalIterator __i) { 6689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of ForwardIterator 6699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _ForwardIterator_concept_specification<_BidirectionalIterator>:: 6709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _ForwardIterator_requirement_violation(__i); 6719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Valid Expressions 6729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__predecrement_operator_requirement_violation(__i); 6739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__postdecrement_operator_requirement_violation(__i); 6749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 6759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _BidirectionalIterator> 6789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Mutable_BidirectionalIterator_concept_specification { 6799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 6809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_Mutable_BidirectionalIterator_requirement_violation( 6819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _BidirectionalIterator __i) 6829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 6839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _BidirectionalIterator_concept_specification<_BidirectionalIterator>:: 6849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _BidirectionalIterator_requirement_violation(__i); 6859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of mutable_ForwardIterator 6869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mutable_ForwardIterator_concept_specification<_BidirectionalIterator>:: 6879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mutable_ForwardIterator_requirement_violation(__i); 6889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 6899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __value_type_type_definition_requirement_violation< 6909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _BidirectionalIterator>::value_type __T; 6919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typename _Mutable_trait<__T>::_Type* __tmp_ptr = 0; 6929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Valid Expressions 6939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR:: 6949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __postincrement_operator_and_assignment_requirement_violation(__i, 6959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *__tmp_ptr); 6969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 6979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* RandomAccessIterator Requirements */ 7009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandAccIter> 7029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _RandomAccessIterator_concept_specification { 7039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 7049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_RandomAccessIterator_requirement_violation(_RandAccIter __i) { 7059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of BidirectionalIterator 7069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _BidirectionalIterator_concept_specification<_RandAccIter>:: 7079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _BidirectionalIterator_requirement_violation(__i); 7089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of LessThanComparable 7099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _LessThanComparable_concept_specification<_RandAccIter>:: 7109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _LessThanComparable_requirement_violation(__i); 7119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 7129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __value_type_type_definition_requirement_violation<_RandAccIter> 7139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ::value_type 7149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block value_type; 7159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 7169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __difference_type_type_definition_requirement_violation<_RandAccIter> 7179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ::difference_type 7189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Dist; 7199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Mutable_trait<_Dist>::_Type _MutDist; 7209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Valid Expressions 7229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__iterator_addition_assignment_requirement_violation(__i, 7239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _MutDist()); 7249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__iterator_addition_requirement_violation(__i, 7259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _MutDist()); 7269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR:: 7279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __iterator_subtraction_assignment_requirement_violation(__i, 7289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _MutDist()); 7299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__iterator_subtraction_requirement_violation(__i, 7309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _MutDist()); 7319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__difference_operator_requirement_violation(__i, __i, 7329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _MutDist()); 7339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typename _Mutable_trait<value_type>::_Type* __dummy_ptr = 0; 7349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__element_access_operator_requirement_violation(__i, 7359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __dummy_ptr, 7369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _MutDist()); 7379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 7389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 7399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _RandAccIter> 7419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Mutable_RandomAccessIterator_concept_specification { 7429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 7439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_Mutable_RandomAccessIterator_requirement_violation(_RandAccIter __i) 7449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 7459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _RandomAccessIterator_concept_specification<_RandAccIter>:: 7469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _RandomAccessIterator_requirement_violation(__i); 7479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of mutable_BidirectionalIterator 7489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mutable_BidirectionalIterator_concept_specification<_RandAccIter>:: 7499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mutable_BidirectionalIterator_requirement_violation(__i); 7509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 7519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __value_type_type_definition_requirement_violation<_RandAccIter> 7529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ::value_type 7539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block value_type; 7549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 7559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __difference_type_type_definition_requirement_violation<_RandAccIter> 7569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ::difference_type 7579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Dist; 7589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typename _Mutable_trait<value_type>::_Type* __tmp_ptr = 0; 7609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Valid Expressions 7619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STL_ERROR::__element_assignment_operator_requirement_violation(__i, 7629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __tmp_ptr, _Dist()); 7639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 7649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 7659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_TYPEDEF_REQUIREMENT(__REQUIREMENT) \ 7679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class Type> \ 7689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct __##__REQUIREMENT##__typedef_requirement_violation { \ 7699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename Type::__REQUIREMENT __REQUIREMENT; \ 7709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 7719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TYPEDEF_REQUIREMENT(value_type); 7739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TYPEDEF_REQUIREMENT(difference_type); 7749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TYPEDEF_REQUIREMENT(size_type); 7759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TYPEDEF_REQUIREMENT(reference); 7769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TYPEDEF_REQUIREMENT(const_reference); 7779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TYPEDEF_REQUIREMENT(pointer); 7789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TYPEDEF_REQUIREMENT(const_pointer); 7799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Alloc> 7829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Allocator_concept_specification { 7839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstatic void 7849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_Allocator_requirement_violation(_Alloc __a) { 7859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of DefaultConstructible 7869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _DefaultConstructible_concept_specification<_Alloc>:: 7879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _DefaultConstructible_requirement_violation(__a); 7889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Refinement of EqualityComparable 7899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _EqualityComparable_concept_specification<_Alloc>:: 7909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _EqualityComparable_requirement_violation(__a); 7919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Associated Types 7929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __value_type__typedef_requirement_violation<_Alloc>(); 7939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __difference_type__typedef_requirement_violation<_Alloc>(); 7949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __size_type__typedef_requirement_violation<_Alloc>(); 7959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __reference__typedef_requirement_violation<_Alloc>(); 7969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __const_reference__typedef_requirement_violation<_Alloc>(); 7979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __pointer__typedef_requirement_violation<_Alloc>(); 7989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __const_pointer__typedef_requirement_violation<_Alloc>(); 7999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Alloc::value_type _Type; 8009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_REQUIRES_SAME_TYPE(typename _Alloc::rebind<_Type>::other, _Alloc); 8019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 8029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 8039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 8049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_USE_CONCEPT_CHECKS */ 8059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 8069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* __CONCEPT_CHECKS_H */ 8079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 8089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 8099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 8109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 811