stl_algo.h (transform (both signatures), generate_n): Use __typeof__ in concept checks.
authorPhil Edwards <pme@gcc.gnu.org>
Sun, 10 Feb 2002 09:05:46 +0000 (09:05 +0000)
committerPhil Edwards <pme@gcc.gnu.org>
Sun, 10 Feb 2002 09:05:46 +0000 (09:05 +0000)
2002-02-10  Phil Edwards  <pme@gcc.gnu.org>

* include/bits/stl_algo.h (transform (both signatures), generate_n):
Use __typeof__ in concept checks.

From-SVN: r49653

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_algo.h

index da2f0f79705a748712c6b1c711c6b626d77e3357..8789b9f5f50394e53f53f8ae41e83c66db74af25 100644 (file)
@@ -1,3 +1,8 @@
+2002-02-10  Phil Edwards  <pme@gcc.gnu.org>
+
+       * include/bits/stl_algo.h (transform (both signatures), generate_n):
+       Use __typeof__ in concept checks.
+
 2002-02-10  Jonathan Wakely  <cow@compsoc.man.ac.uk>
 
        * include/bits/stl_algo.h (__median, for_each, find, find_if,
index 501bcf6dc0fa9223b3b6ca92cd9dc3f43e8b94f8..653aaa6a2e128d720d961809611f981824d27f29 100644 (file)
@@ -737,11 +737,9 @@ namespace std
     {
       // concept requirements
       __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
-    /* XXX
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-           // should be "the type returned by _UnaryOperation"
-           typename iterator_traits<_InputIter>::value_type>)
-    */
+            // "the type returned by a _UnaryOperation"
+            __typeof__(__unary_op(*__first))>)
 
       for ( ; __first != __last; ++__first, ++__result)
        *__result = __unary_op(*__first);
@@ -775,11 +773,9 @@ namespace std
       // concept requirements
       __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>)
-    */
+            // "the type returned by a _BinaryOperation"
+            __typeof__(__binary_op(*__first1,*__first2))>)
 
       for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result)
        *__result = __binary_op(*__first1, *__first2);
@@ -948,11 +944,10 @@ namespace std
     _OutputIter
     generate_n(_OutputIter __first, _Size __n, _Generator __gen)
     {
-    /*
-      // XXX concept requirements
+      // concept requirements
       __glibcpp_function_requires(_OutputIteratorConcept<_OutputIter,
-           "the return type of _Generator" ??   >)
-    */
+            // "the type returned by a _Generator"
+            __typeof__(gen())>)
 
       for ( ; __n > 0; --__n, ++__first)
        *__first = __gen();