This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[libstdc++-v3] Concept-checking tweaks and --enable


On Wed, Oct 31, 2001 at 07:43:21PM -0800, Benjamin Kosnik wrote:
> 
> > Say the word and it's in.  :-)
> 
> The word is "finally"
> 
> ;)

*grin*  Committed to trunk.  Tested on i686-pc-linux-gnu and a cross to
powerpc-sim, nightly for a few months.

The writeup is here:

    http://gcc.gnu.org/ml/libstdc++/2001-09/msg00026.html

and hasn't changed since then.  The patch is almost exactly the same,
modulo line numbers and a couple of fixes that have already been made.
I give the patch actually applied here for the record.

To use the checks, configure with --enable-concept-checks.


2001-11-01  Phil Edwards  <pme@gcc.gnu.org>

	* acinclude.m4:  Fix spacing.
	(GLIBCPP_ENABLE_CONCEPT_CHECKS):  New macro.
	* configure.in:  Call here.
	* acconfig.h:  Add _GLIBCPP_CONCEPT_CHECKS.
	* include/bits/boost_concept_check.h:  Fix headers.
	(__function_requires):  Make inline.
	* include/bits/c++config (_GLIBCPP_CONCEPT_CHECKS):  Remove.
	* aclocal.m4:  Regenerate.
	* config.h.in:  Regenerate.
	* configure:  Regenerate.

	Move trailing ';' inside macro, PR libstdc++/3666.
	* include/bits/concept_check.h:  Add semicolon.
	* include/bits/stl_algo.h:  Remove semicolon.
	* include/bits/stl_algobase.h:  Likewise.
	* include/bits/stl_deque.h:  Likewise.
	* include/bits/stl_heap.h:  Likewise.
	* include/bits/stl_iterator_base_funcs.h:  Likewise.
	* include/bits/stl_list.h:  Likewise.
	* include/bits/stl_map.h:  Likewise.
	* include/bits/stl_multimap.h:  Likewise.
	* include/bits/stl_multiset.h:  Likewise.
	* include/bits/stl_numeric.h:  Likewise.
	* include/bits/stl_queue.h:  Likewise.
	* include/bits/stl_set.h:  Likewise.
	* include/bits/stl_stack.h:  Likewise.
	* include/bits/stl_vector.h:  Likewise.
	* include/ext/hash_map:  Likewise.
	* include/ext/hash_set:  Likewise.
	* include/ext/slist:  Likewise.

	* src/concept-inst.cc:  New file with explicit instantiations.
	* src/Makefile.am (sources):  Add here, with special build rules.
	* src/Makefile.in:  Regenerate.


Index: acconfig.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/acconfig.h,v
retrieving revision 1.22
diff -u -3 -p -r1.22 acconfig.h
--- acconfig.h	2001/09/11 00:12:56	1.22
+++ acconfig.h	2001/11/01 15:42:31
@@ -34,6 +34,9 @@
 // Define if using setrlimit to limit memory usage during 'make check'.
 #undef _GLIBCPP_MEM_LIMITS
 
+// Define to use concept checking code from the boost libraries.
+#undef _GLIBCPP_CONCEPT_CHECKS
+
 // Define if you have the atan2f function.
 #undef _GLIBCPP_HAVE_ATAN2F 
 
Index: acinclude.m4
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/acinclude.m4,v
retrieving revision 1.178
diff -u -3 -p -r1.178 acinclude.m4
--- acinclude.m4	2001/10/02 18:44:25	1.178
+++ acinclude.m4	2001/11/01 15:42:31
@@ -1355,7 +1355,7 @@ AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
 
   AC_ARG_ENABLE(c99,
   changequote(<<, >>)dnl
-  <<--enable-c99      turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
+  <<--enable-c99            turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
   changequote([, ])dnl
   [case "$enableval" in
    yes) enable_c99=yes ;;
@@ -1921,4 +1921,33 @@ AC_DEFUN(AC_LC_MESSAGES, [
     fi
   ])
 ])
+
+
+dnl
+dnl Check for whether the Boost-derived checks should be turned on.
+dnl
+dnl GLIBCPP_ENABLE_CONCEPT_CHECKS
+dnl --enable-concept-checks turns them on.
+dnl --disable-concept-checks leaves them off.
+dnl  +  Usage:  GLIBCPP_ENABLE_CONCEPT_CHECKS[(DEFAULT)]
+dnl       Where DEFAULT is either `yes' or `no'.  If ommitted, it
+dnl       defaults to `no'.
+AC_DEFUN(GLIBCPP_ENABLE_CONCEPT_CHECKS, [dnl
+define([GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT], ifelse($1, yes, yes, no))dnl
+AC_ARG_ENABLE(concept-checks,
+changequote(<<, >>)dnl
+<<  --enable-concept-checks use Boost-derived template checks [default=>>GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT],
+changequote([, ])dnl
+[case "$enableval" in
+ yes) enable_concept_checks=yes ;;
+ no)  enable_concept_checks=no ;;
+ *)   AC_MSG_ERROR([Unknown argument to enable/disable concept checks]) ;;
+ esac],
+enable_concept_checks=GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT)dnl
+dnl Option parsed, now set things appropriately
+if test x"$enable_concept_checks" = xyes; then
+  AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS)
+fi
+])
+
 
Index: configure.in
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/configure.in,v
retrieving revision 1.77
diff -u -3 -p -r1.77 configure.in
--- configure.in	2001/10/23 21:40:28	1.77
+++ configure.in	2001/11/01 15:42:35
@@ -48,6 +48,7 @@ GLIBCPP_ENABLE_CHEADERS([c_std])
 GLIBCPP_ENABLE_THREADS
 GLIBCPP_ENABLE_CXX_FLAGS([none])
 GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
+GLIBCPP_ENABLE_CONCEPT_CHECKS
 
 
 if test -n "$with_cross_host" || test x"$build" != x"$host"; then
Index: include/bits/boost_concept_check.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/boost_concept_check.h,v
retrieving revision 1.3
diff -u -3 -p -r1.3 boost_concept_check.h
--- boost_concept_check.h	2001/04/14 09:46:13	1.3
+++ boost_concept_check.h	2001/11/01 15:42:35
@@ -11,6 +11,7 @@
 #define _GLIBCPP_BOOST_CONCEPT_CHECK 1
 
 #pragma GCC system_header
+#include <bits/std_cstddef.h>                // for ptrdiff_t, used next
 #include <bits/stl_iterator_base_types.h>    // for traits and tags
 #include <utility>                           // for pair<>
 
@@ -20,8 +21,11 @@ namespace __gnu_cxx
 
 #define _IsUnused __attribute__ ((__unused__))
 
+// When the C-C code is in use, we would like this function to do as little
+// as possible at runtime, use as few resources as possible, and hopefully
+// be elided out of existence... hmmm.
 template <class _Concept>
-void __function_requires()
+inline void __function_requires()
 {
   void (_Concept::*__x)() _IsUnused = &_Concept::__constraints;
 }
Index: include/bits/c++config
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/c++config,v
retrieving revision 1.160
diff -u -3 -p -r1.160 c++config
--- c++config	2001/11/01 08:16:12	1.160
+++ c++config	2001/11/01 15:42:35
@@ -55,9 +55,6 @@
 // Use corrected code from the committee library group's issues list.
 #define _GLIBCPP_RESOLVE_LIB_DEFECTS 1
 
-// Enable concept checking code from the boost libraries.
-//#define _GLIBCPP_CONCEPT_CHECKS 1
-
 // Define this to permit user-level control of the expansion of string
 // buffers (via a fn pointer), see basic_string.* for more.
 //#define _GLIBCPP_ALLOC_CONTROL
Index: include/bits/concept_check.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/concept_check.h,v
retrieving revision 1.3
diff -u -3 -p -r1.3 concept_check.h
--- concept_check.h	2001/04/18 01:06:04	1.3
+++ concept_check.h	2001/11/01 15:42:35
@@ -66,15 +66,15 @@
 // a valid instantiation pattern.  Thus, we steal a feature from C99.
 
 #define __glibcpp_function_requires(...)                                 \
-            __gnu_cxx::__function_requires< __gnu_cxx::__VA_ARGS__ >()
+            __gnu_cxx::__function_requires< __gnu_cxx::__VA_ARGS__ >();
 #define __glibcpp_class_requires(_a,_C)                                  \
-            _GLIBCPP_CLASS_REQUIRES(_a, __gnu_cxx, _C)
+            _GLIBCPP_CLASS_REQUIRES(_a, __gnu_cxx, _C);
 #define __glibcpp_class_requires2(_a,_b,_C)                              \
-            _GLIBCPP_CLASS_REQUIRES2(_a, _b, __gnu_cxx, _C)
+            _GLIBCPP_CLASS_REQUIRES2(_a, _b, __gnu_cxx, _C);
 #define __glibcpp_class_requires3(_a,_b,_c,_C)                           \
-            _GLIBCPP_CLASS_REQUIRES3(_a, _b, _c, __gnu_cxx, _C)
+            _GLIBCPP_CLASS_REQUIRES3(_a, _b, _c, __gnu_cxx, _C);
 #define __glibcpp_class_requires4(_a,_b,_c,_d,_C)                        \
-            _GLIBCPP_CLASS_REQUIRES4(_a, _b, _c, _d, __gnu_cxx, _C)
+            _GLIBCPP_CLASS_REQUIRES4(_a, _b, _c, _d, __gnu_cxx, _C);
 
 #endif // enable/disable
 
Index: include/bits/stl_algo.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_algo.h,v
retrieving revision 1.12
diff -u -3 -p -r1.12 stl_algo.h
--- stl_algo.h	2001/10/19 18:39:00	1.12
+++ stl_algo.h	2001/11/01 15:42:35
@@ -74,7 +74,7 @@ namespace std
     __median(const _Tp& __a, const _Tp& __b, const _Tp& __c)
     {
       // concept requirements
-      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>);
+      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>)
       if (__a < __b)
 	if (__b < __c)
 	  return __b;
@@ -95,7 +95,7 @@ namespace std
     __median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_BinaryFunctionConcept<_Compare, bool, _Tp, _Tp>);
+      __glibcpp_function_requires(_BinaryFunctionConcept<_Compare, bool, _Tp, _Tp>)
       if (__comp(__a, __b))
 	if (__comp(__b, __c))
 	  return __b;
@@ -117,7 +117,7 @@ namespace std
     for_each(_InputIter __first, _InputIter __last, _Function __f)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       for ( ; __first != __last; ++__first)
 	__f(*__first);
       return __f;
@@ -231,9 +231,9 @@ namespace std
 	 const _Tp& __val)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_EqualOpConcept<
-		typename iterator_traits<_InputIter>::value_type, _Tp>);
+		typename iterator_traits<_InputIter>::value_type, _Tp>)
       return find(__first, __last, __val, __iterator_category(__first));
     }
 
@@ -243,9 +243,9 @@ namespace std
 	    _Predicate __pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_UnaryPredicateConcept<_Predicate,
-	      typename iterator_traits<_InputIter>::value_type>);
+	      typename iterator_traits<_InputIter>::value_type>)
       return find_if(__first, __last, __pred, __iterator_category(__first));
     }
 
@@ -256,9 +256,9 @@ namespace std
     adjacent_find(_ForwardIter __first, _ForwardIter __last)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_EqualityComparableConcept<
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
       if (__first == __last)
 	return __last;
       _ForwardIter __next = __first;
@@ -276,10 +276,10 @@ namespace std
 		  _BinaryPredicate __binary_pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
 	    typename iterator_traits<_ForwardIter>::value_type,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
       if (__first == __last)
 	return __last;
       _ForwardIter __next = __first;
@@ -304,10 +304,10 @@ namespace std
 	  _Size& __n)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_EqualityComparableConcept<
-	    typename iterator_traits<_InputIter>::value_type >);
-      __glibcpp_function_requires(_EqualityComparableConcept<_Tp>);
+	    typename iterator_traits<_InputIter>::value_type >)
+      __glibcpp_function_requires(_EqualityComparableConcept<_Tp>)
       for ( ; __first != __last; ++__first)
 	if (*__first == __value)
 	  ++__n;
@@ -320,9 +320,9 @@ namespace std
 	     _Size& __n)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_UnaryPredicateConcept<_Predicate,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
       for ( ; __first != __last; ++__first)
 	if (__pred(*__first))
 	  ++__n;
@@ -333,10 +333,10 @@ namespace std
     count(_InputIter __first, _InputIter __last, const _Tp& __value)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_EqualityComparableConcept<
-	    typename iterator_traits<_InputIter>::value_type >);
-      __glibcpp_function_requires(_EqualityComparableConcept<_Tp>);
+	    typename iterator_traits<_InputIter>::value_type >)
+      __glibcpp_function_requires(_EqualityComparableConcept<_Tp>)
       typename iterator_traits<_InputIter>::difference_type __n = 0;
       for ( ; __first != __last; ++__first)
 	if (*__first == __value)
@@ -349,9 +349,9 @@ namespace std
     count_if(_InputIter __first, _InputIter __last, _Predicate __pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_UnaryPredicateConcept<_Predicate,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
       typename iterator_traits<_InputIter>::difference_type __n = 0;
       for ( ; __first != __last; ++__first)
 	if (__pred(*__first))
@@ -368,11 +368,11 @@ namespace std
 	   _ForwardIter2 __first2, _ForwardIter2 __last2) 
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter1>);
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter2>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter1>)
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter2>)
       __glibcpp_function_requires(_EqualOpConcept<
 	    typename iterator_traits<_ForwardIter1>::value_type,
-	    typename iterator_traits<_ForwardIter2>::value_type>);
+	    typename iterator_traits<_ForwardIter2>::value_type>)
 
       // Test for empty ranges
       if (__first1 == __last1 || __first2 == __last2)
@@ -421,11 +421,11 @@ namespace std
 	   _BinaryPred  __predicate) 
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter1>);
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter2>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter1>)
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter2>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_BinaryPred,
 	    typename iterator_traits<_ForwardIter1>::value_type,
-	    typename iterator_traits<_ForwardIter2>::value_type>);
+	    typename iterator_traits<_ForwardIter2>::value_type>)
 
       // Test for empty ranges
       if (__first1 == __last1 || __first2 == __last2)
@@ -483,10 +483,10 @@ namespace std
 	     _Integer __count, const _Tp& __val)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_EqualityComparableConcept<
-	    typename iterator_traits<_ForwardIter>::value_type>);
-      __glibcpp_function_requires(_EqualityComparableConcept<_Tp>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
+      __glibcpp_function_requires(_EqualityComparableConcept<_Tp>)
 
       if (__count <= 0)
 	return __first;
@@ -517,9 +517,9 @@ namespace std
 	     _BinaryPred __binary_pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_BinaryPred,
-	    typename iterator_traits<_ForwardIter>::value_type, _Tp>);
+	    typename iterator_traits<_ForwardIter>::value_type, _Tp>)
 
       if (__count <= 0)
 	return __first;
@@ -560,14 +560,14 @@ namespace std
 		_ForwardIter2 __first2)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter1>);
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter2>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter1>)
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter2>)
       __glibcpp_function_requires(_ConvertibleConcept<
 	    typename iterator_traits<_ForwardIter1>::value_type,
-	    typename iterator_traits<_ForwardIter2>::value_type>);
+	    typename iterator_traits<_ForwardIter2>::value_type>)
       __glibcpp_function_requires(_ConvertibleConcept<
 	    typename iterator_traits<_ForwardIter2>::value_type,
-	    typename iterator_traits<_ForwardIter1>::value_type>);
+	    typename iterator_traits<_ForwardIter1>::value_type>)
 
       for ( ; __first1 != __last1; ++__first1, ++__first2)
 	iter_swap(__first1, __first2);
@@ -582,11 +582,11 @@ namespace std
 	      _OutputIter __result, _UnaryOperation __unary_op)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
     /* XXX
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
 	    // should be "the type returned by _UnaryOperation"
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
     */
 
       for ( ; __first != __last; ++__first, ++__result)
@@ -602,12 +602,12 @@ namespace std
 	      _BinaryOperation __binary_op)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
     /* XXX
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
 	    // should be "the type returned by _BinaryOperation"
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
     */
 
       for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result)
@@ -623,11 +623,11 @@ namespace std
 	    const _Tp& __old_value, const _Tp& __new_value)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_EqualOpConcept<
-	    typename iterator_traits<_ForwardIter>::value_type, _Tp>);
+	    typename iterator_traits<_ForwardIter>::value_type, _Tp>)
       __glibcpp_function_requires(_ConvertibleConcept<_Tp,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       for ( ; __first != __last; ++__first)
 	if (*__first == __old_value)
@@ -640,11 +640,11 @@ namespace std
 	       _Predicate __pred, const _Tp& __new_value)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_ConvertibleConcept<_Tp,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
       __glibcpp_function_requires(_UnaryPredicateConcept<_Predicate,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       for ( ; __first != __last; ++__first)
 	if (__pred(*__first))
@@ -658,11 +658,11 @@ namespace std
 		 const _Tp& __old_value, const _Tp& __new_value)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
       __glibcpp_function_requires(_EqualOpConcept<
-	    typename iterator_traits<_InputIter>::value_type, _Tp>);
+	    typename iterator_traits<_InputIter>::value_type, _Tp>)
 
       for ( ; __first != __last; ++__first, ++__result)
 	*__result = *__first == __old_value ? __new_value : *__first;
@@ -677,11 +677,11 @@ namespace std
 		    _Predicate __pred, const _Tp& __new_value)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
       __glibcpp_function_requires(_UnaryPredicateConcept<_Predicate,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
 
       for ( ; __first != __last; ++__first, ++__result)
 	*__result = __pred(*__first) ? __new_value : *__first;
@@ -695,9 +695,9 @@ namespace std
     generate(_ForwardIter __first, _ForwardIter __last, _Generator __gen)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_GeneratorConcept<_Generator,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       for ( ; __first != __last; ++__first)
 	*__first = __gen();
@@ -710,7 +710,7 @@ namespace std
     /*
       // XXX concept requirements
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    "the return type of _Generator" ??   >);
+	    "the return type of _Generator" ??   >)
     */
 
       for ( ; __n > 0; --__n, ++__first)
@@ -726,11 +726,11 @@ namespace std
 		_OutputIter __result, const _Tp& __value)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
       __glibcpp_function_requires(_EqualOpConcept<
-	    typename iterator_traits<_InputIter>::value_type, _Tp>);
+	    typename iterator_traits<_InputIter>::value_type, _Tp>)
 
       for ( ; __first != __last; ++__first)
 	if (!(*__first == __value)) {
@@ -746,11 +746,11 @@ namespace std
 		   _OutputIter __result, _Predicate __pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
       __glibcpp_function_requires(_UnaryPredicateConcept<_Predicate,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
 
       for ( ; __first != __last; ++__first)
 	if (!__pred(*__first)) {
@@ -766,11 +766,11 @@ namespace std
 	   const _Tp& __value)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_ConvertibleConcept<_Tp,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
       __glibcpp_function_requires(_EqualOpConcept<
-	    typename iterator_traits<_ForwardIter>::value_type, _Tp>);
+	    typename iterator_traits<_ForwardIter>::value_type, _Tp>)
 
       __first = find(__first, __last, __value);
       _ForwardIter __i = __first;
@@ -784,9 +784,9 @@ namespace std
 	      _Predicate __pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_UnaryPredicateConcept<_Predicate,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       __first = find_if(__first, __last, __pred);
       _ForwardIter __i = __first;
@@ -831,11 +831,11 @@ namespace std
 		_OutputIter __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
       __glibcpp_function_requires(_EqualityComparableConcept<
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
     
       typedef typename iterator_traits<_OutputIter>::iterator_category _IterType;
 
@@ -853,7 +853,7 @@ namespace std
       // concept requirements -- iterators already checked
       __glibcpp_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
 	  typename iterator_traits<_InputIter>::value_type,
-	  typename iterator_traits<_InputIter>::value_type>);
+	  typename iterator_traits<_InputIter>::value_type>)
     
       typename iterator_traits<_InputIter>::value_type __value = *__first;
       *__result = __value;
@@ -875,7 +875,7 @@ namespace std
       // concept requirements -- iterators already checked
       __glibcpp_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
 	    typename iterator_traits<_ForwardIter>::value_type,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
     
       *__result = *__first;
       while (++__first != __last)
@@ -890,9 +890,9 @@ namespace std
 		_BinaryPredicate __binary_pred)
     {
       // concept requirements -- predicates checked later
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
     
       typedef typename iterator_traits<_OutputIter>::iterator_category _IterType;
 
@@ -906,9 +906,9 @@ __result, __binary_pred, _IterType());
     unique(_ForwardIter __first, _ForwardIter __last)
     {
 	  // concept requirements
-	  __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+	  __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
 	  __glibcpp_function_requires(_EqualityComparableConcept<
-		    typename iterator_traits<_ForwardIter>::value_type>);
+		    typename iterator_traits<_ForwardIter>::value_type>)
 
 	  __first = adjacent_find(__first, __last);
 	  return unique_copy(__first, __last, __first);
@@ -920,10 +920,10 @@ __result, __binary_pred, _IterType());
            _BinaryPredicate __binary_pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
 		typename iterator_traits<_ForwardIter>::value_type,
-		typename iterator_traits<_ForwardIter>::value_type>);
+		typename iterator_traits<_ForwardIter>::value_type>)
 
       __first = adjacent_find(__first, __last, __binary_pred);
       return unique_copy(__first, __last, __first, __binary_pred);
@@ -956,7 +956,7 @@ __result, __binary_pred, _IterType());
     {
 	  // concept requirements
 	  __glibcpp_function_requires(_Mutable_BidirectionalIteratorConcept<
-		    _BidirectionalIter>);
+		    _BidirectionalIter>)
 	  __reverse(__first, __last, __iterator_category(__first));
     }
 
@@ -966,9 +966,9 @@ __result, __binary_pred, _IterType());
 			     _OutputIter __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter>);
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-		typename iterator_traits<_BidirectionalIter>::value_type>);
+		typename iterator_traits<_BidirectionalIter>::value_type>)
 
       while (__first != __last) {
 	--__last;
@@ -1029,7 +1029,7 @@ __result, __binary_pred, _IterType());
     {
       // concept requirements
       __glibcpp_function_requires(_Mutable_BidirectionalIteratorConcept<
-	    _BidirectionalIter>);
+	    _BidirectionalIter>)
     
       if ((__first == __middle) || (__last  == __middle))
 	return;
@@ -1057,7 +1057,7 @@ __result, __binary_pred, _IterType());
     {
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
+	    _RandomAccessIter>)
     
       if ((__first == __middle) || (__last  == __middle))
 	return;
@@ -1114,7 +1114,7 @@ __result, __binary_pred, _IterType());
     rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
     
       typedef typename iterator_traits<_ForwardIter>::iterator_category _IterType;
       __rotate(__first, __middle, __last, _IterType());
@@ -1126,9 +1126,9 @@ __result, __binary_pred, _IterType());
                 _ForwardIter __last, _OutputIter __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-		typename iterator_traits<_ForwardIter>::value_type>);
+		typename iterator_traits<_ForwardIter>::value_type>)
 
       return copy(__first, __middle, copy(__middle, __last, __result));
     }
@@ -1155,7 +1155,7 @@ __result, __binary_pred, _IterType());
     {
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
+	    _RandomAccessIter>)
 
       if (__first == __last) return;
       for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
@@ -1169,7 +1169,7 @@ __result, __binary_pred, _IterType());
     {
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
+	    _RandomAccessIter>)
 
       if (__first == __last) return;
       for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
@@ -1184,9 +1184,9 @@ __result, __binary_pred, _IterType());
                     _OutputIter __out, const _Distance __n)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-		typename iterator_traits<_ForwardIter>::value_type>);
+		typename iterator_traits<_ForwardIter>::value_type>)
 
       _Distance __remaining = distance(__first, __last);
       _Distance __m = min(__n, __remaining);
@@ -1212,11 +1212,11 @@ __result, __binary_pred, _IterType());
 		   _RandomNumberGenerator& __rand)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-		typename iterator_traits<_ForwardIter>::value_type>);
+		typename iterator_traits<_ForwardIter>::value_type>)
       __glibcpp_function_requires(_UnaryFunctionConcept<
-		_RandomNumberGenerator, _Distance, _Distance>);
+		_RandomNumberGenerator, _Distance, _Distance>)
 
       _Distance __remaining = distance(__first, __last);
       _Distance __m = min(__n, __remaining);
@@ -1266,7 +1266,7 @@ __result, __binary_pred, _IterType());
     {
       // concept requirements
       __glibcpp_function_requires(_UnaryFunctionConcept<
-	    _RandomNumberGenerator, _Distance, _Distance>);
+	    _RandomNumberGenerator, _Distance, _Distance>)
 
       _Distance __m = 0;
       _Distance __t = __n;
@@ -1290,9 +1290,9 @@ __result, __binary_pred, _IterType());
 		  _RandomAccessIter __out_first, _RandomAccessIter __out_last) 
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
+	    _RandomAccessIter>)
 
       return __random_sample(__first, __last,
 			     __out_first, __out_last - __out_first);
@@ -1307,9 +1307,9 @@ __result, __binary_pred, _IterType());
 		  _RandomNumberGenerator& __rand) 
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
+	    _RandomAccessIter>)
 
       return __random_sample(__first, __last,
 			     __out_first, __rand,
@@ -1373,9 +1373,9 @@ __result, __binary_pred, _IterType());
 	      _Predicate   __pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_UnaryPredicateConcept<_Predicate,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       return __partition(__first, __last, __pred, __iterator_category(__first));
     }
@@ -1447,9 +1447,9 @@ __result, __binary_pred, _IterType());
 		     _Predicate __pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_UnaryPredicateConcept<_Predicate,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
     
       if (__first == __last)
 	return __first;
@@ -1684,8 +1684,8 @@ __result, __binary_pred, _IterType());
       
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>);
+	    _RandomAccessIter>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>)
     
       if (__first != __last) {
 	__introsort_loop(__first, __last, __lg(__last - __first) * 2);
@@ -1701,8 +1701,8 @@ __result, __binary_pred, _IterType());
       
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
-      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _ValueType, _ValueType>);
+	    _RandomAccessIter>)
+      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _ValueType, _ValueType>)
     
       if (__first != __last) {
 	__introsort_loop(__first, __last, __lg(__last - __first) * 2, __comp);
@@ -1910,8 +1910,8 @@ __result, __binary_pred, _IterType());
     
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>);
+	    _RandomAccessIter>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>)
     
       _Temporary_buffer<_RandomAccessIter, _ValueType> buf(__first, __last);
       if (buf.begin() == 0)
@@ -1929,9 +1929,9 @@ __result, __binary_pred, _IterType());
     
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
+	    _RandomAccessIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
-							  _ValueType, _ValueType>);
+							  _ValueType, _ValueType>)
     
       _Temporary_buffer<_RandomAccessIter, _ValueType> buf(__first, __last);
       if (buf.begin() == 0)
@@ -1951,8 +1951,8 @@ __result, __binary_pred, _IterType());
     
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>);
+	    _RandomAccessIter>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>)
     
       make_heap(__first, __middle);
       for (_RandomAccessIter __i = __middle; __i < __last; ++__i)
@@ -1972,9 +1972,9 @@ __result, __binary_pred, _IterType());
     
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIter>);
+	    _RandomAccessIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
-							  _ValueType, _ValueType>);
+							  _ValueType, _ValueType>)
     
       make_heap(__first, __middle, __comp);
       for (_RandomAccessIter __i = __middle; __i < __last; ++__i)
@@ -1994,10 +1994,10 @@ __result, __binary_pred, _IterType());
       typedef typename iterator_traits<_RandomAccessIter>::difference_type _DistanceType;
       
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
-      __glibcpp_function_requires(_ConvertibleConcept<_InputValueType, _OutputValueType>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_OutputValueType>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_InputValueType>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
+      __glibcpp_function_requires(_ConvertibleConcept<_InputValueType, _OutputValueType>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_OutputValueType>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_InputValueType>)
     
       if (__result_first == __result_last) return __result_last;
       _RandomAccessIter __result_real_last = __result_first;
@@ -2030,11 +2030,11 @@ __result, __binary_pred, _IterType());
       typedef typename iterator_traits<_RandomAccessIter>::difference_type _DistanceType;
 	
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
-      __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<_RandomAccessIter>);
-      __glibcpp_function_requires(_ConvertibleConcept<_InputValueType, _OutputValueType>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
+      __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<_RandomAccessIter>)
+      __glibcpp_function_requires(_ConvertibleConcept<_InputValueType, _OutputValueType>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
-				  _OutputValueType, _OutputValueType>);
+				  _OutputValueType, _OutputValueType>)
     
       if (__result_first == __result_last) return __result_last;
       _RandomAccessIter __result_real_last = __result_first;
@@ -2065,8 +2065,8 @@ __result, __binary_pred, _IterType());
       typedef typename iterator_traits<_RandomAccessIter>::value_type _ValueType;
       
       // concept requirements
-      __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<_RandomAccessIter>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>);
+      __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<_RandomAccessIter>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>)
     
       while (__last - __first > 3) {
 	_RandomAccessIter __cut =
@@ -2092,9 +2092,9 @@ __result, __binary_pred, _IterType());
       typedef typename iterator_traits<_RandomAccessIter>::value_type _ValueType;
 	
       // concept requirements
-      __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<_RandomAccessIter>);
+      __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<_RandomAccessIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
-				  _ValueType, _ValueType>);
+				  _ValueType, _ValueType>)
     
       while (__last - __first > 3) {
 	_RandomAccessIter __cut =
@@ -2123,9 +2123,9 @@ __result, __binary_pred, _IterType());
       typedef typename iterator_traits<_ForwardIter>::difference_type _DistanceType;
     
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
-      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
+      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>)
     
       _DistanceType __len = distance(__first, __last);
       _DistanceType __half;
@@ -2155,9 +2155,9 @@ __result, __binary_pred, _IterType());
       typedef typename iterator_traits<_ForwardIter>::difference_type _DistanceType;
       
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
-      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>);
-      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _Tp, _Tp>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
+      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>)
+      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _Tp, _Tp>)
     
       _DistanceType __len = distance(__first, __last);
       _DistanceType __half;
@@ -2186,9 +2186,9 @@ __result, __binary_pred, _IterType());
       typedef typename iterator_traits<_ForwardIter>::difference_type _DistanceType;
       
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
-      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
+      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>)
     
       _DistanceType __len = distance(__first, __last);
       _DistanceType __half;
@@ -2218,9 +2218,9 @@ __result, __binary_pred, _IterType());
       typedef typename iterator_traits<_ForwardIter>::difference_type _DistanceType;
       
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
-      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>);
-      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _Tp, _Tp>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
+      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>)
+      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _Tp, _Tp>)
     
       _DistanceType __len = distance(__first, __last);
       _DistanceType __half;
@@ -2249,9 +2249,9 @@ __result, __binary_pred, _IterType());
       typedef typename iterator_traits<_ForwardIter>::difference_type _DistanceType;
       
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
-      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
+      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>)
     
       _DistanceType __len = distance(__first, __last);
       _DistanceType __half;
@@ -2287,9 +2287,9 @@ __result, __binary_pred, _IterType());
       typedef typename iterator_traits<_ForwardIter>::difference_type _DistanceType;
       
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
-      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>);
-      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _Tp, _Tp>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
+      __glibcpp_function_requires(_SameTypeConcept<_Tp, _ValueType>)
+      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _Tp, _Tp>)
     
       _DistanceType __len = distance(__first, __last);
       _DistanceType __half;
@@ -2322,10 +2322,10 @@ __result, __binary_pred, _IterType());
                   const _Tp& __val)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_SameTypeConcept<_Tp,
-		typename iterator_traits<_ForwardIter>::value_type>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>);
+		typename iterator_traits<_ForwardIter>::value_type>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>)
 
       _ForwardIter __i = lower_bound(__first, __last, __val);
       return __i != __last && !(__val < *__i);
@@ -2337,10 +2337,10 @@ __result, __binary_pred, _IterType());
                   const _Tp& __val, _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_SameTypeConcept<_Tp,
-		typename iterator_traits<_ForwardIter>::value_type>);
-      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _Tp, _Tp>);
+		typename iterator_traits<_ForwardIter>::value_type>)
+      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _Tp, _Tp>)
 
       _ForwardIter __i = lower_bound(__first, __last, __val, __comp);
       return __i != __last && !__comp(__val, *__i);
@@ -2355,15 +2355,15 @@ __result, __binary_pred, _IterType());
 	  _OutputIter __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2) {
 	if (*__first2 < *__first1) {
@@ -2387,16 +2387,16 @@ __result, __binary_pred, _IterType());
 	  _OutputIter __result, _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2) {
 	if (__comp(*__first2, *__first1)) {
@@ -2684,8 +2684,8 @@ __result, __binary_pred, _IterType());
     
       // concept requirements
       __glibcpp_function_requires(_Mutable_BidirectionalIteratorConcept<
-	    _BidirectionalIter>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>);
+	    _BidirectionalIter>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>)
     
       if (__first == __middle || __middle == __last)
 	return;
@@ -2715,9 +2715,9 @@ __result, __binary_pred, _IterType());
       
       // concept requirements
       __glibcpp_function_requires(_Mutable_BidirectionalIteratorConcept<
-	    _BidirectionalIter>);
+	    _BidirectionalIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
-	    _ValueType, _ValueType>);
+	    _ValueType, _ValueType>)
     
       if (__first == __middle || __middle == __last)
 	return;
@@ -2745,13 +2745,13 @@ __result, __binary_pred, _IterType());
 	     _InputIter2 __first2, _InputIter2 __last2)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2)
 	if (*__first2 < *__first1)
@@ -2770,14 +2770,14 @@ __result, __binary_pred, _IterType());
 	     _InputIter2 __first2, _InputIter2 __last2, _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2)
 	if (__comp(*__first2, *__first1))
@@ -2797,15 +2797,15 @@ __result, __binary_pred, _IterType());
 	      _OutputIter __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2) {
 	if (*__first1 < *__first2) {
@@ -2834,16 +2834,16 @@ __result, __binary_pred, _IterType());
 	      _OutputIter __result, _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2) {
 	if (__comp(*__first1, *__first2)) {
@@ -2871,15 +2871,15 @@ __result, __binary_pred, _IterType());
 		     _OutputIter __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2) 
 	if (*__first1 < *__first2) 
@@ -2903,16 +2903,16 @@ __result, __binary_pred, _IterType());
 		     _OutputIter __result, _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2)
 	if (__comp(*__first1, *__first2))
@@ -2935,15 +2935,15 @@ __result, __binary_pred, _IterType());
 		   _OutputIter __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2)
 	if (*__first1 < *__first2) {
@@ -2968,16 +2968,16 @@ __result, __binary_pred, _IterType());
 		   _OutputIter __result, _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2)
 	if (__comp(*__first1, *__first2)) {
@@ -3001,15 +3001,15 @@ __result, __binary_pred, _IterType());
 			     _OutputIter __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2)
 	if (*__first1 < *__first2) {
@@ -3038,16 +3038,16 @@ __result, __binary_pred, _IterType());
 			     _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_SameTypeConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
 
       while (__first1 != __last1 && __first2 != __last2)
 	if (__comp(*__first1, *__first2)) {
@@ -3075,9 +3075,9 @@ __result, __binary_pred, _IterType());
     max_element(_ForwardIter __first, _ForwardIter __last)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       if (__first == __last) return __first;
       _ForwardIter __result = __first;
@@ -3093,10 +3093,10 @@ __result, __binary_pred, _IterType());
 		_Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
 	    typename iterator_traits<_ForwardIter>::value_type,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       if (__first == __last) return __first;
       _ForwardIter __result = __first;
@@ -3110,9 +3110,9 @@ __result, __binary_pred, _IterType());
     min_element(_ForwardIter __first, _ForwardIter __last)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       if (__first == __last) return __first;
       _ForwardIter __result = __first;
@@ -3128,10 +3128,10 @@ __result, __binary_pred, _IterType());
 		_Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
 	    typename iterator_traits<_ForwardIter>::value_type,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       if (__first == __last) return __first;
       _ForwardIter __result = __first;
@@ -3149,9 +3149,9 @@ __result, __binary_pred, _IterType());
     next_permutation(_BidirectionalIter __first, _BidirectionalIter __last)
     {
       // concept requirements
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter>);
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_BidirectionalIter>::value_type>);
+	    typename iterator_traits<_BidirectionalIter>::value_type>)
 
       if (__first == __last)
 	return false;
@@ -3186,10 +3186,10 @@ __result, __binary_pred, _IterType());
 		     _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter>);
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
 	    typename iterator_traits<_BidirectionalIter>::value_type,
-	    typename iterator_traits<_BidirectionalIter>::value_type>);
+	    typename iterator_traits<_BidirectionalIter>::value_type>)
 
       if (__first == __last)
 	return false;
@@ -3223,9 +3223,9 @@ __result, __binary_pred, _IterType());
     prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last)
     {
       // concept requirements
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter>);
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_BidirectionalIter>::value_type>);
+	    typename iterator_traits<_BidirectionalIter>::value_type>)
 
       if (__first == __last)
 	return false;
@@ -3260,10 +3260,10 @@ __result, __binary_pred, _IterType());
 		     _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter>);
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_Compare,
 	    typename iterator_traits<_BidirectionalIter>::value_type,
-	    typename iterator_traits<_BidirectionalIter>::value_type>);
+	    typename iterator_traits<_BidirectionalIter>::value_type>)
 
       if (__first == __last)
 	return false;
@@ -3300,11 +3300,11 @@ __result, __binary_pred, _IterType());
 		  _ForwardIter __first2, _ForwardIter __last2)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_EqualOpConcept<
 	    typename iterator_traits<_InputIter>::value_type,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       for ( ; __first1 != __last1; ++__first1) 
 	for (_ForwardIter __iter = __first2; __iter != __last2; ++__iter)
@@ -3320,14 +3320,14 @@ __result, __binary_pred, _IterType());
 		  _BinaryPredicate __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_EqualOpConcept<
 	    typename iterator_traits<_InputIter>::value_type,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
 	    typename iterator_traits<_InputIter>::value_type,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       for ( ; __first1 != __last1; ++__first1) 
 	for (_ForwardIter __iter = __first2; __iter != __last2; ++__iter)
@@ -3401,8 +3401,8 @@ __result, __binary_pred, _IterType());
 	       bidirectional_iterator_tag, bidirectional_iterator_tag)
     {
       // concept requirements
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter1>);
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter2>);
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter1>)
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter2>)
 
       typedef reverse_iterator<_BidirectionalIter1> _RevIter1;
       typedef reverse_iterator<_BidirectionalIter2> _RevIter2;
@@ -3430,8 +3430,8 @@ __result, __binary_pred, _IterType());
 	       _BinaryPredicate __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter1>);
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter2>);
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter1>)
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIter2>)
 
       typedef reverse_iterator<_BidirectionalIter1> _RevIter1;
       typedef reverse_iterator<_BidirectionalIter2> _RevIter2;
@@ -3459,11 +3459,11 @@ __result, __binary_pred, _IterType());
 	     _ForwardIter2 __first2, _ForwardIter2 __last2)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter1>);
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter2>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter1>)
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter2>)
       __glibcpp_function_requires(_EqualOpConcept<
 	    typename iterator_traits<_ForwardIter1>::value_type,
-	    typename iterator_traits<_ForwardIter2>::value_type>);
+	    typename iterator_traits<_ForwardIter2>::value_type>)
 
       return __find_end(__first1, __last1, __first2, __last2,
 			__iterator_category(__first1),
@@ -3478,11 +3478,11 @@ __result, __binary_pred, _IterType());
 	     _BinaryPredicate __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter1>);
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter2>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter1>)
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter2>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_BinaryPredicate,
 	    typename iterator_traits<_ForwardIter1>::value_type,
-	    typename iterator_traits<_ForwardIter2>::value_type>);
+	    typename iterator_traits<_ForwardIter2>::value_type>)
 
       return __find_end(__first1, __last1, __first2, __last2,
 			__iterator_category(__first1),
@@ -3529,9 +3529,9 @@ __result, __binary_pred, _IterType());
     is_heap(_RandomAccessIter __first, _RandomAccessIter __last)
     {
       // concept requirements
-      __glibcpp_function_requires(_RandomAccessIteratorConcept<_RandomAccessIter>);
+      __glibcpp_function_requires(_RandomAccessIteratorConcept<_RandomAccessIter>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_RandomAccessIter>::value_type>);
+	    typename iterator_traits<_RandomAccessIter>::value_type>)
 
       return __is_heap(__first, __last - __first);
     }
@@ -3543,10 +3543,10 @@ __result, __binary_pred, _IterType());
 	    _StrictWeakOrdering __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_RandomAccessIteratorConcept<_RandomAccessIter>);
+      __glibcpp_function_requires(_RandomAccessIteratorConcept<_RandomAccessIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering,
 	    typename iterator_traits<_RandomAccessIter>::value_type, 
-	    typename iterator_traits<_RandomAccessIter>::value_type>);
+	    typename iterator_traits<_RandomAccessIter>::value_type>)
 
       return __is_heap(__first, __comp, __last - __first);
     }
@@ -3560,9 +3560,9 @@ __result, __binary_pred, _IterType());
     is_sorted(_ForwardIter __first, _ForwardIter __last)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       if (__first == __last)
 	return true;
@@ -3581,10 +3581,10 @@ __result, __binary_pred, _IterType());
     is_sorted(_ForwardIter __first, _ForwardIter __last, _StrictWeakOrdering __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering,
 	    typename iterator_traits<_ForwardIter>::value_type, 
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       if (__first == __last)
 	return true;
Index: include/bits/stl_algobase.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_algobase.h,v
retrieving revision 1.13
diff -u -3 -p -r1.13 stl_algobase.h
--- stl_algobase.h	2001/07/18 17:08:55	1.13
+++ stl_algobase.h	2001/11/01 15:42:35
@@ -89,10 +89,10 @@ namespace std
       typedef typename iterator_traits<_ForwardIter2>::value_type _ValueType2;
 
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter1>);
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter2>);
-      __glibcpp_function_requires(_ConvertibleConcept<_ValueType1, _ValueType2>);
-      __glibcpp_function_requires(_ConvertibleConcept<_ValueType2, _ValueType1>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter1>)
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter2>)
+      __glibcpp_function_requires(_ConvertibleConcept<_ValueType1, _ValueType2>)
+      __glibcpp_function_requires(_ConvertibleConcept<_ValueType2, _ValueType1>)
 
       _ValueType1 __tmp = *__a;
       *__a = *__b;
@@ -104,7 +104,7 @@ namespace std
     swap(_Tp& __a, _Tp& __b)
     {
       // concept requirements
-      __glibcpp_function_requires(_SGIAssignableConcept<_Tp>);
+      __glibcpp_function_requires(_SGIAssignableConcept<_Tp>)
       
       _Tp __tmp = __a;
       __a = __b;
@@ -122,7 +122,7 @@ namespace std
     min(const _Tp& __a, const _Tp& __b)
     {
       // concept requirements
-      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>);
+      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>)
       //return __b < __a ? __b : __a;
       if (__b < __a) return __b; return __a;
     }
@@ -132,7 +132,7 @@ namespace std
     max(const _Tp& __a, const _Tp& __b) 
     {
       // concept requirements
-      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>);
+      __glibcpp_function_requires(_LessThanComparableConcept<_Tp>)
       //return  __a < __b ? __b : __a;
       if (__a < __b) return __b; return __a;
     }
@@ -272,9 +272,9 @@ namespace std
     copy(_InputIter __first, _InputIter __last, _OutputIter __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
 
        typedef typename _Is_normal_iterator<_InputIter>::_Normal __Normal;
        return __copy_ni1(__first, __last, __result, __Normal());
@@ -396,11 +396,11 @@ namespace std
     copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BI1>);
-      __glibcpp_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>);
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BI1>)
+      __glibcpp_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>)
       __glibcpp_function_requires(_ConvertibleConcept<
 	    typename iterator_traits<_BI1>::value_type,
-	    typename iterator_traits<_BI2>::value_type>);
+	    typename iterator_traits<_BI2>::value_type>)
 
       typedef typename _Is_normal_iterator<_BI1>::_Normal __Normal;
       return __copy_backward_input_normal_iterator(__first, __last, __result,
@@ -439,9 +439,9 @@ namespace std
     copy_n(_InputIter __first, _Size __count, _OutputIter __result)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-	    typename iterator_traits<_InputIter>::value_type>);
+	    typename iterator_traits<_InputIter>::value_type>)
 
       return __copy_n(__first, __count, __result, __iterator_category(__first));
     }
@@ -455,7 +455,7 @@ namespace std
     fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __value)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
 
       for ( ; __first != __last; ++__first)
 	*__first = __value;
@@ -466,7 +466,7 @@ namespace std
     fill_n(_OutputIter __first, _Size __n, const _Tp& __value)
     {
       // concept requirements
-      __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,_Tp>);
+      __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,_Tp>)
 
       for ( ; __n > 0; --__n, ++__first)
 	*__first = __value;
@@ -530,12 +530,12 @@ namespace std
 	     _InputIter2 __first2)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_EqualityComparableConcept<
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_EqualityComparableConcept<
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
 
       while (__first1 != __last1 && *__first1 == *__first2) {
 	++__first1;
@@ -551,8 +551,8 @@ namespace std
 	     _BinaryPredicate __binary_pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
 
       while (__first1 != __last1 && __binary_pred(*__first1, *__first2)) {
 	++__first1;
@@ -567,11 +567,11 @@ namespace std
 	  _InputIter2 __first2)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_EqualOpConcept<
 	    typename iterator_traits<_InputIter1>::value_type,
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
 
       for ( ; __first1 != __last1; ++__first1, ++__first2)
 	if (!(*__first1 == *__first2))
@@ -586,8 +586,8 @@ namespace std
 	  _BinaryPredicate __binary_pred)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
 
       for ( ; __first1 != __last1; ++__first1, ++__first2)
 	if (!__binary_pred(*__first1, *__first2))
@@ -605,12 +605,12 @@ namespace std
 			    _InputIter2 __first2, _InputIter2 __last2)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
 
       for ( ; __first1 != __last1 && __first2 != __last2
 	    ; ++__first1, ++__first2) {
@@ -629,8 +629,8 @@ namespace std
 			    _Compare __comp)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
 
       for ( ; __first1 != __last1 && __first2 != __last2
 	    ; ++__first1, ++__first2) {
@@ -727,12 +727,12 @@ namespace std
 				 _InputIter2 __first2, _InputIter2 __last2)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter2>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_InputIter1>::value_type>);
+	    typename iterator_traits<_InputIter1>::value_type>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_InputIter2>::value_type>);
+	    typename iterator_traits<_InputIter2>::value_type>)
 
       return __lexicographical_compare_3way(__first1, __last1, __first2, __last2);
     }
Index: include/bits/stl_deque.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_deque.h,v
retrieving revision 1.11
diff -u -3 -p -r1.11 stl_deque.h
--- stl_deque.h	2001/10/30 18:14:20	1.11
+++ stl_deque.h	2001/11/01 15:42:36
@@ -394,7 +394,7 @@ template <class _Tp, class _Alloc = allo
 class deque : protected _Deque_base<_Tp, _Alloc> {
 
   // concept requirements
-  __glibcpp_class_requires(_Tp, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
 
   typedef _Deque_base<_Tp, _Alloc> _Base;
 public:                         // Basic types
Index: include/bits/stl_heap.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_heap.h,v
retrieving revision 1.8
diff -u -3 -p -r1.8 stl_heap.h
--- stl_heap.h	2001/07/18 17:08:56	1.8
+++ stl_heap.h	2001/11/01 15:42:36
@@ -89,8 +89,8 @@ namespace std
 
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIterator>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>);
+	    _RandomAccessIterator>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>)
 
       __push_heap(__first, _DistanceType((__last - __first) - 1), _DistanceType(0), 
 		  _ValueType(*(__last - 1)));
@@ -123,7 +123,7 @@ namespace std
 
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIterator>);
+	    _RandomAccessIterator>)
 
       __push_heap(__first, _DistanceType((__last - __first) - 1), _DistanceType(0), 
 		  _ValueType(*(__last - 1)), __comp);
@@ -168,8 +168,8 @@ namespace std
 
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIterator>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>);
+	    _RandomAccessIterator>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>)
 
       __pop_heap(__first, __last - 1, __last - 1, _ValueType(*(__last - 1)));
     }
@@ -214,7 +214,7 @@ namespace std
     {
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIterator>);
+	    _RandomAccessIterator>)
 
       typedef typename iterator_traits<_RandomAccessIterator>::value_type _ValueType;
       __pop_heap(__first, __last - 1, __last - 1, _ValueType(*(__last - 1)), __comp);
@@ -231,8 +231,8 @@ namespace std
 
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIterator>);
-      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>);
+	    _RandomAccessIterator>)
+      __glibcpp_function_requires(_LessThanComparableConcept<_ValueType>)
 
       if (__last - __first < 2) return;
       _DistanceType __len = __last - __first;
@@ -257,7 +257,7 @@ namespace std
 
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIterator>);
+	    _RandomAccessIterator>)
 
       if (__last - __first < 2) return;
       _DistanceType __len = __last - __first;
@@ -277,9 +277,9 @@ namespace std
     {
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIterator>);
+	    _RandomAccessIterator>)
       __glibcpp_function_requires(_LessThanComparableConcept<
-	    typename iterator_traits<_RandomAccessIterator>::value_type>);
+	    typename iterator_traits<_RandomAccessIterator>::value_type>)
 
       while (__last - __first > 1)
 	pop_heap(__first, __last--);
@@ -292,7 +292,7 @@ namespace std
     {
       // concept requirements
       __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
-	    _RandomAccessIterator>);
+	    _RandomAccessIterator>)
 
       while (__last - __first > 1)
 	pop_heap(__first, __last--, __comp);
Index: include/bits/stl_iterator_base_funcs.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_iterator_base_funcs.h,v
retrieving revision 1.8
diff -u -3 -p -r1.8 stl_iterator_base_funcs.h
--- stl_iterator_base_funcs.h	2001/07/18 17:08:57	1.8
+++ stl_iterator_base_funcs.h	2001/11/01 15:42:36
@@ -81,7 +81,7 @@ namespace std
 	       _Distance& __n, input_iterator_tag)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>)
       while (__first != __last) { ++__first; ++__n; }
     }
 
@@ -91,7 +91,7 @@ namespace std
 	       _Distance& __n, random_access_iterator_tag)
     {
       // concept requirements
-      __glibcpp_function_requires(_RandomAccessIteratorConcept<_RandomAccessIterator>);
+      __glibcpp_function_requires(_RandomAccessIteratorConcept<_RandomAccessIterator>)
       __n += __last - __first;
     }
 
@@ -109,7 +109,7 @@ namespace std
     __distance(_InputIterator __first, _InputIterator __last, input_iterator_tag)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>)
       typename iterator_traits<_InputIterator>::difference_type __n = 0;
       while (__first != __last) {
 	++__first; ++__n;
@@ -123,7 +123,7 @@ namespace std
 			   random_access_iterator_tag)
     {
       // concept requirements
-      __glibcpp_function_requires(_RandomAccessIteratorConcept<_RandomAccessIterator>);
+      __glibcpp_function_requires(_RandomAccessIteratorConcept<_RandomAccessIterator>)
       return __last - __first;
     }
 
@@ -140,7 +140,7 @@ namespace std
     __advance(_InputIter& __i, _Distance __n, input_iterator_tag)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
       while (__n--) ++__i;
     }
 
@@ -149,7 +149,7 @@ namespace std
     __advance(_BidirectionalIterator& __i, _Distance __n, bidirectional_iterator_tag)
     {
       // concept requirements
-      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIterator>);
+      __glibcpp_function_requires(_BidirectionalIteratorConcept<_BidirectionalIterator>)
       if (__n > 0)
 	while (__n--) ++__i;
       else
@@ -161,7 +161,7 @@ namespace std
     __advance(_RandomAccessIterator& __i, _Distance __n, random_access_iterator_tag)
     {
       // concept requirements
-      __glibcpp_function_requires(_RandomAccessIteratorConcept<_RandomAccessIterator>);
+      __glibcpp_function_requires(_RandomAccessIteratorConcept<_RandomAccessIterator>)
       __i += __n;
     }
 
Index: include/bits/stl_list.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_list.h,v
retrieving revision 1.8
diff -u -3 -p -r1.8 stl_list.h
--- stl_list.h	2001/10/24 02:37:54	1.8
+++ stl_list.h	2001/11/01 15:42:36
@@ -230,7 +230,7 @@ template <class _Tp, class _Alloc = allo
 class list : protected _List_base<_Tp, _Alloc>
 {
   // concept requirements
-  __glibcpp_class_requires(_Tp, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
 
   typedef _List_base<_Tp, _Alloc> _Base;
 protected:
Index: include/bits/stl_map.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_map.h,v
retrieving revision 1.7
diff -u -3 -p -r1.7 stl_map.h
--- stl_map.h	2001/06/27 17:09:52	1.7
+++ stl_map.h	2001/11/01 15:42:36
@@ -70,7 +70,7 @@ template <class _Key, class _Tp, class _
 class map
 {
   // concept requirements
-  __glibcpp_class_requires(_Tp, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
   __glibcpp_class_requires4(_Compare, bool, _Key, _Key, _BinaryFunctionConcept);
 
 public:
Index: include/bits/stl_multimap.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_multimap.h,v
retrieving revision 1.7
diff -u -3 -p -r1.7 stl_multimap.h
--- stl_multimap.h	2001/06/27 17:09:52	1.7
+++ stl_multimap.h	2001/11/01 15:42:36
@@ -84,7 +84,7 @@ template <class _Key, class _Tp, class _
 class multimap
 {
   // concept requirements
-  __glibcpp_class_requires(_Tp, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
   __glibcpp_class_requires4(_Compare, bool, _Key, _Key, _BinaryFunctionConcept);
 
 public:
Index: include/bits/stl_multiset.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_multiset.h,v
retrieving revision 1.8
diff -u -3 -p -r1.8 stl_multiset.h
--- stl_multiset.h	2001/06/27 17:09:52	1.8
+++ stl_multiset.h	2001/11/01 15:42:36
@@ -83,7 +83,7 @@ template <class _Key, class _Compare, cl
 class multiset
 {
   // concept requirements
-  __glibcpp_class_requires(_Key, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Key, _SGIAssignableConcept)
   __glibcpp_class_requires4(_Compare, bool, _Key, _Key, _BinaryFunctionConcept);
 
 public:
Index: include/bits/stl_numeric.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_numeric.h,v
retrieving revision 1.8
diff -u -3 -p -r1.8 stl_numeric.h
--- stl_numeric.h	2001/07/18 17:08:57	1.8
+++ stl_numeric.h	2001/11/01 15:42:36
@@ -69,7 +69,7 @@ namespace std
     accumulate(_InputIterator __first, _InputIterator __last, _Tp __init)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>)
 
       for ( ; __first != __last; ++__first)
 	__init = __init + *__first;
@@ -82,7 +82,7 @@ namespace std
 	       _BinaryOperation __binary_op)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>)
 
       for ( ; __first != __last; ++__first)
 	__init = __binary_op(__init, *__first);
@@ -95,8 +95,8 @@ namespace std
 		  _InputIterator2 __first2, _Tp __init)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator2>)
 
       for ( ; __first1 != __last1; ++__first1, ++__first2)
 	__init = __init + (*__first1 * *__first2);
@@ -112,8 +112,8 @@ namespace std
 		  _BinaryOperation2 __binary_op2)
     {
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator1>);
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator2>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator1>)
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator2>)
 
       for ( ; __first1 != __last1; ++__first1, ++__first2)
 	__init = __binary_op1(__init, __binary_op2(*__first1, *__first2));
@@ -128,8 +128,8 @@ namespace std
       typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
 
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>);
-      __glibcpp_function_requires(_OutputIteratorConcept<_OutputIterator, _ValueType>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcpp_function_requires(_OutputIteratorConcept<_OutputIterator, _ValueType>)
 
       if (__first == __last) return __result;
       *__result = *__first;
@@ -149,8 +149,8 @@ namespace std
       typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
 
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>);
-      __glibcpp_function_requires(_OutputIteratorConcept<_OutputIterator, _ValueType>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcpp_function_requires(_OutputIteratorConcept<_OutputIterator, _ValueType>)
 
       if (__first == __last) return __result;
       *__result = *__first;
@@ -170,8 +170,8 @@ namespace std
       typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
 
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>);
-      __glibcpp_function_requires(_OutputIteratorConcept<_OutputIterator, _ValueType>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcpp_function_requires(_OutputIteratorConcept<_OutputIterator, _ValueType>)
 
       if (__first == __last) return __result;
       *__result = *__first;
@@ -192,8 +192,8 @@ namespace std
       typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
 
       // concept requirements
-      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>);
-      __glibcpp_function_requires(_OutputIteratorConcept<_OutputIterator, _ValueType>);
+      __glibcpp_function_requires(_InputIteratorConcept<_InputIterator>)
+      __glibcpp_function_requires(_OutputIteratorConcept<_OutputIterator, _ValueType>)
 
       if (__first == __last) return __result;
       *__result = *__first;
@@ -259,9 +259,9 @@ namespace std
     iota(_ForwardIter __first, _ForwardIter __last, _Tp __value)
     {
       // concept requirements
-      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>);
+      __glibcpp_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
       __glibcpp_function_requires(_ConvertibleConcept<_Tp,
-	    typename iterator_traits<_ForwardIter>::value_type>);
+	    typename iterator_traits<_ForwardIter>::value_type>)
 
       while (__first != __last)
 	*__first++ = __value++;
Index: include/bits/stl_queue.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_queue.h,v
retrieving revision 1.9
diff -u -3 -p -r1.9 stl_queue.h
--- stl_queue.h	2001/10/24 02:37:54	1.9
+++ stl_queue.h	2001/11/01 15:42:36
@@ -82,9 +82,9 @@ template <class _Tp, class _Sequence>
 class queue
 {
   // concept requirements
-  __glibcpp_class_requires(_Tp, _SGIAssignableConcept);
-  __glibcpp_class_requires(_Sequence, _FrontInsertionSequenceConcept);
-  __glibcpp_class_requires(_Sequence, _BackInsertionSequenceConcept);
+  __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
+  __glibcpp_class_requires(_Sequence, _FrontInsertionSequenceConcept)
+  __glibcpp_class_requires(_Sequence, _BackInsertionSequenceConcept)
   typedef typename _Sequence::value_type _Sequence_value_type;
   __glibcpp_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept);
 
@@ -164,9 +164,9 @@ template <class _Tp, 
 class priority_queue
 {
   // concept requirements
-  __glibcpp_class_requires(_Tp, _SGIAssignableConcept);
-  __glibcpp_class_requires(_Sequence, _SequenceConcept);
-  __glibcpp_class_requires(_Sequence, _RandomAccessContainerConcept);
+  __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
+  __glibcpp_class_requires(_Sequence, _SequenceConcept)
+  __glibcpp_class_requires(_Sequence, _RandomAccessContainerConcept)
   typedef typename _Sequence::value_type _Sequence_value_type;
   __glibcpp_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept);
   __glibcpp_class_requires4(_Compare, bool, _Tp, _Tp, _BinaryFunctionConcept);
Index: include/bits/stl_set.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_set.h,v
retrieving revision 1.8
diff -u -3 -p -r1.8 stl_set.h
--- stl_set.h	2001/06/27 17:09:52	1.8
+++ stl_set.h	2001/11/01 15:42:36
@@ -84,7 +84,7 @@ template <class _Key, class _Compare, cl
 class set
 {
   // concept requirements
-  __glibcpp_class_requires(_Key, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Key, _SGIAssignableConcept)
   __glibcpp_class_requires4(_Compare, bool, _Key, _Key, _BinaryFunctionConcept);
 
 public:
Index: include/bits/stl_stack.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_stack.h,v
retrieving revision 1.7
diff -u -3 -p -r1.7 stl_stack.h
--- stl_stack.h	2001/06/27 17:09:52	1.7
+++ stl_stack.h	2001/11/01 15:42:36
@@ -82,8 +82,8 @@ template <class _Tp, class _Sequence>
 class stack
 {
   // concept requirements
-  __glibcpp_class_requires(_Tp, _SGIAssignableConcept);
-  __glibcpp_class_requires(_Sequence, _BackInsertionSequenceConcept);
+  __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
+  __glibcpp_class_requires(_Sequence, _BackInsertionSequenceConcept)
   typedef typename _Sequence::value_type _Sequence_value_type;
   __glibcpp_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept);
 
Index: include/bits/stl_vector.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_vector.h,v
retrieving revision 1.11
diff -u -3 -p -r1.11 stl_vector.h
--- stl_vector.h	2001/10/24 02:37:54	1.11
+++ stl_vector.h	2001/11/01 15:42:36
@@ -147,7 +147,7 @@ template <class _Tp, class _Alloc = allo
 class vector : protected _Vector_base<_Tp, _Alloc> 
 {
   // concept requirements
-  __glibcpp_class_requires(_Tp, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
 
 private:
   typedef _Vector_base<_Tp, _Alloc> _Base;
Index: include/ext/hash_map
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/hash_map,v
retrieving revision 1.7
diff -u -3 -p -r1.7 hash_map
--- hash_map	2001/06/27 17:09:52	1.7
+++ hash_map	2001/11/01 15:42:36
@@ -233,8 +233,8 @@ template <class _Key, class _Tp, class _
 class hash_multimap
 {
   // concept requirements
-  __glibcpp_class_requires(_Key, _SGIAssignableConcept);
-  __glibcpp_class_requires(_Tp, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Key, _SGIAssignableConcept)
+  __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
   __glibcpp_class_requires3(_HashFcn, size_t, _Key, _UnaryFunctionConcept);
   __glibcpp_class_requires3(_EqualKey, _Key, _Key, _BinaryPredicateConcept);
 
Index: include/ext/hash_set
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/hash_set,v
retrieving revision 1.7
diff -u -3 -p -r1.7 hash_set
--- hash_set	2001/06/27 17:09:53	1.7
+++ hash_set	2001/11/01 15:42:36
@@ -83,7 +83,7 @@ template <class _Value, class _HashFcn, 
 class hash_set
 {
   // concept requirements
-  __glibcpp_class_requires(_Value, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Value, _SGIAssignableConcept)
   __glibcpp_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept);
   __glibcpp_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept);
 
@@ -234,7 +234,7 @@ template <class _Value, class _HashFcn, 
 class hash_multiset
 {
   // concept requirements
-  __glibcpp_class_requires(_Value, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Value, _SGIAssignableConcept)
   __glibcpp_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept);
   __glibcpp_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept);
 
Index: include/ext/slist
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/ext/slist,v
retrieving revision 1.10
diff -u -3 -p -r1.10 slist
--- slist	2001/10/24 02:37:54	1.10
+++ slist	2001/11/01 15:42:36
@@ -291,7 +291,7 @@ template <class _Tp, class _Alloc = allo
 class slist : private _Slist_base<_Tp,_Alloc>
 {
   // concept requirements
-  __glibcpp_class_requires(_Tp, _SGIAssignableConcept);
+  __glibcpp_class_requires(_Tp, _SGIAssignableConcept)
 
 private:
   typedef _Slist_base<_Tp,_Alloc> _Base;
Index: src/Makefile.am
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/src/Makefile.am,v
retrieving revision 1.98
diff -u -3 -p -r1.98 Makefile.am
--- Makefile.am	2001/09/28 23:44:47	1.98
+++ Makefile.am	2001/11/01 15:42:36
@@ -65,7 +65,7 @@ sources = \
 	locale.cc locale-inst.cc localename.cc \
 	collate.cc messages.cc moneypunct.cc numpunct.cc time.cc \
 	misc-inst.cc stdexcept.cc stl-inst.cc string-inst.cc strstream.cc \
-	valarray-inst.cc wstring-inst.cc
+	valarray-inst.cc wstring-inst.cc concept-inst.cc
 
 VPATH = $(top_srcdir):$(top_srcdir)/src
 
@@ -88,16 +88,20 @@ strstream.lo: strstream.cc
 strstream.o: strstream.cc
 	$(CXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $<
 
+# Use special rules for the concept-checking instantiations so that all
+# the generated template functions are also instantiated.  Force the checks
+# to be on so that the instantiations are actually seen.
+concept-inst.lo: concept-inst.cc
+	$(LTCXXCOMPILE) -D_GLIBCPP_CONCEPT_CHECKS -fimplicit-templates -c $<
+concept-inst.o: concept-inst.cc
+	$(CXXCOMPILE) -D_GLIBCPP_CONCEPT_CHECKS -fimplicit-templates -c $<
 
+
 # AM_CXXFLAGS needs to be in each subdirectory so that it can be
 # modified in a per-library or per-sub-library way.  Need to manually
 # set this option because CONFIG_CXXFLAGS has to be after
 # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
 # as the occasion call for it. (ie, --enable-debug)
-#
-# The no-implicit-templates flag will generate unresolved references to
-# the concept-checking symbols.  So we must disable the checks while
-# actually building the library.
 AM_CXXFLAGS = \
 	-fno-implicit-templates \
 	$(LIBSUPCXX_CXXFLAGS) \
Index: src/concept-inst.cc
===================================================================
RCS file: concept-inst.cc
diff -N concept-inst.cc
--- /dev/null	Tue May  5 13:32:27 1998
+++ concept-inst.cc	Thu Nov  1 07:42:36 2001
@@ -0,0 +1,166 @@
+// Concept checking instantiations -*- C++ -*-
+
+// Copyright (C) 2001 Free Software Foundation
+//
+// This file is part of GNU CC.
+//
+// GNU CC is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+// 
+// GNU CC is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// You should have received a copy of the GNU General Public License
+// along with GNU CC; see the file COPYING.  If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+// The implementation of some of the more complex checks uses the simple
+// checks (good reuse of code), thereby requiring that the simple checks
+// be instantiated somewhere.  The simple checks use other simple checks,
+// and so on, until a couple hundred symbols all need instantiations.  We
+// explicitly instantiate the initial set of symbols; compiling this file
+// with -fimplicit-templates will take care of the rest for us.
+
+#include <bits/concept_check.h>
+
+#ifdef _GLIBCPP_CONCEPT_CHECKS
+
+#include <bits/stl_alloc.h>
+#include <bits/std_vector.h>
+#include <bits/std_ostream.h>
+
+#define _Instantiate(...) template void __function_requires< __VA_ARGS__ > ()
+
+namespace __gnu_cxx
+{
+
+  template void __aux_require_boolean_expr<bool>(bool const&);
+
+  _Instantiate(_BidirectionalIteratorConcept<
+    std::__normal_iterator< std::locale::facet**,
+    std::vector<std::locale::facet*,std::allocator<std::locale::facet*> > > > );
+
+  _Instantiate(_BidirectionalIteratorConcept<
+    std::__normal_iterator< unsigned*,
+    std::vector<unsigned, std::allocator<unsigned> > > > );
+
+  _Instantiate(_ConvertibleConcept<std::locale::facet*, std::locale::facet*> );
+
+  _Instantiate(_ConvertibleConcept<unsigned, unsigned> );
+
+  _Instantiate(_InputIteratorConcept<char*> );
+
+  _Instantiate(_InputIteratorConcept<char const*> );
+
+  _Instantiate(_InputIteratorConcept<std::locale::facet**> );
+
+  _Instantiate(_InputIteratorConcept<
+    std::__normal_iterator< std::locale::facet* const*,
+    std::vector<std::locale::facet*,std::allocator<std::locale::facet*> > > > );
+
+  _Instantiate(_InputIteratorConcept<
+    std::__normal_iterator< std::locale::facet**,
+    std::vector<std::locale::facet*,std::allocator<std::locale::facet*> > > > );
+
+  _Instantiate(_InputIteratorConcept<
+    std::__normal_iterator< unsigned*,
+    std::vector<unsigned, std::allocator<unsigned> > > > );
+
+#ifdef _GLIBCPP_USE_WCHAR_T
+  _Instantiate(_InputIteratorConcept<wchar_t*> );
+
+  _Instantiate(_InputIteratorConcept<wchar_t const*> );
+
+  _Instantiate(_LessThanComparableConcept<wchar_t*> );
+#endif
+
+  _Instantiate(_LessThanComparableConcept<char*> );
+
+  _Instantiate(_LessThanComparableConcept<int> );
+
+  _Instantiate(_LessThanComparableConcept<long> );
+
+#ifdef _GLIBCPP_USE_LONG_LONG
+  _Instantiate(_LessThanComparableConcept<long long> );
+#endif
+
+  _Instantiate(_LessThanComparableConcept<unsigned> );
+
+  _Instantiate(_Mutable_BidirectionalIteratorConcept<
+    std::__normal_iterator< std::locale::facet**,
+    std::vector<std::locale::facet*,std::allocator<std::locale::facet*> > > > );
+
+  _Instantiate(_Mutable_BidirectionalIteratorConcept<
+    std::__normal_iterator< unsigned*,
+    std::vector<unsigned, std::allocator<unsigned> > > > );
+
+  _Instantiate(_Mutable_ForwardIteratorConcept<
+    std::__normal_iterator< std::locale::facet**,
+    std::vector<std::locale::facet*,std::allocator<std::locale::facet*> > > > );
+
+  _Instantiate(_OutputIteratorConcept<
+    std::locale::facet**, std::locale::facet*> );
+
+  _Instantiate(_OutputIteratorConcept<
+    std::__normal_iterator< std::locale::facet**,
+      std::vector<std::locale::facet*, std::allocator<std::locale::facet* > > >,
+    std::locale::facet* > );
+
+  _Instantiate(_OutputIteratorConcept<std::__normal_iterator<
+    unsigned*, std::vector<unsigned, std::allocator<unsigned> > >, unsigned> );
+
+  _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
+    char, std::char_traits<char> >, char> );
+
+#ifdef _GLIBCPP_USE_WCHAR_T
+  _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
+    wchar_t, std::char_traits<wchar_t> >, wchar_t> );
+#endif
+
+  _Instantiate(_RandomAccessIteratorConcept<char*> );
+
+  _Instantiate(_RandomAccessIteratorConcept<char const*> );
+
+  _Instantiate(_RandomAccessIteratorConcept<
+    std::__normal_iterator<char const*, std::string> > );
+
+  _Instantiate(_RandomAccessIteratorConcept<
+    std::__normal_iterator<char*, std::string> > );
+
+#ifdef _GLIBCPP_USE_WCHAR_T
+  _Instantiate(_RandomAccessIteratorConcept<
+    std::__normal_iterator<wchar_t const*,
+    std::basic_string<wchar_t, std::char_traits<wchar_t>,
+                               std::allocator<wchar_t> > > > );
+
+  _Instantiate(_RandomAccessIteratorConcept<
+    std::__normal_iterator<wchar_t*,
+    std::basic_string<wchar_t, std::char_traits<wchar_t>,
+                               std::allocator<wchar_t> > > > );
+
+  _Instantiate(_RandomAccessIteratorConcept<wchar_t*> );
+
+  _Instantiate(_RandomAccessIteratorConcept<wchar_t const*> );
+#endif
+
+} // namespace __gnu_cxx
+
+#undef _Instantiate
+
+#endif
+
+


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]