In C++0x mode, import iota and is_sorted from namespace std into namespace __gnu_cxx...
authorJeffrey Yasskin <jyasskin@google.com>
Thu, 7 Apr 2011 04:11:12 +0000 (04:11 +0000)
committerJeffrey Yasskin <jyasskin@gcc.gnu.org>
Thu, 7 Apr 2011 04:11:12 +0000 (04:11 +0000)
In C++0x mode, import iota and is_sorted from namespace std into
namespace __gnu_cxx to avoid ambiguous call errors.  copy_n would be a
good candidate for this too, except it was standardized with a
different return type.

Tested:
  `make -k check-c++` on x86_64-unknown-linux-gnu.

libstdc++-v3/ChangeLog:

2011-04-06  Jeffrey Yasskin  <jyasskin@google.com>

        * include/ext/algorithm (is_sorted): In C++0x mode import from
        namespace std.
        * include/ext/numeric (iota): In C++0x mode import from
        namespace std.
        * testsuite/ext/is_sorted/cxx0x.cc: New.
        * testsuite/ext/iota/cxx0x.cc: New.

From-SVN: r172073

libstdc++-v3/ChangeLog
libstdc++-v3/include/ext/algorithm
libstdc++-v3/include/ext/numeric
libstdc++-v3/testsuite/ext/iota/cxx0x.cc [new file with mode: 0644]
libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc [new file with mode: 0644]

index 0dd815f675a4e18252998d3638341dcf3f20a00b..cb1223539652fa4781448f2c3a9f480771024827 100644 (file)
@@ -1,3 +1,12 @@
+2011-04-06  Jeffrey Yasskin  <jyasskin@google.com>
+
+       * include/ext/algorithm (is_sorted): In C++0x mode import from
+       namespace std.
+       * include/ext/numeric (iota): In C++0x mode import from
+       namespace std.
+       * testsuite/ext/is_sorted/cxx0x.cc: New.
+       * testsuite/ext/iota/cxx0x.cc: New.
+
 2011-04-02  Jonathan Wakely  <redi@gcc.gnu.org>
 
        PR libstdc++/48398
index 368b5918058452a580535d4b25ed2500cc3cc83c..417a03ab97c29d858603ed5820cc239b8994b375 100644 (file)
@@ -471,6 +471,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     }
 #endif
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  using std::is_sorted;
+#else
   // is_sorted, a predicated testing whether a range is sorted in
   // nondescending order.  This is an extension, not part of the C++
   // standard.
@@ -526,6 +529,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
          return false;
       return true;
     }
+#endif  // __GXX_EXPERIMENTAL_CXX0X__
 
   /**
    *  @brief Find the median of three values.
index d4a367fca52f849d3f09be393f7c8fbc078448a9..b389177f374654feafed876b591d6dbbc2e481fc 100644 (file)
@@ -123,6 +123,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     power(_Tp __x, _Integer __n)
     { return __power(__x, __n); }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  using std::iota;
+#else
   /**
    *  This is an SGI extension.
    *  @ingroup SGIextensions
@@ -141,9 +144,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       while (__first != __last)
        *__first++ = __value++;
     }
+#endif  // __GXX_EXPERIMENTAL_CXX0X__
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 
 #endif
-
diff --git a/libstdc++-v3/testsuite/ext/iota/cxx0x.cc b/libstdc++-v3/testsuite/ext/iota/cxx0x.cc
new file mode 100644 (file)
index 0000000..84917ad
--- /dev/null
@@ -0,0 +1,28 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+// any later version.
+
+// This library 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 this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/numeric>
+#include <vector>
+
+void foo()
+{
+  std::vector<int> v;
+  iota(v.begin(), v.end(), 0);
+}
diff --git a/libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc b/libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc
new file mode 100644 (file)
index 0000000..518716c
--- /dev/null
@@ -0,0 +1,28 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+// any later version.
+
+// This library 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 this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/algorithm>
+#include <vector>
+
+void foo()
+{
+  std::vector<int> v;
+  is_sorted(v.begin(), v.end());
+}