summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorjyasskin <jyasskin@138bc75d-0d04-0410-961f-82ee72b054a4>2011-04-07 04:11:12 +0000
committerjyasskin <jyasskin@138bc75d-0d04-0410-961f-82ee72b054a4>2011-04-07 04:11:12 +0000
commit3dacfcad47a1e6dba0f2e4618f71f7d5310b0ede (patch)
treef92cd6d3626cf4f136bce1ba2332932aae9bdace /libstdc++-v3
parenta4ba603a393924431480d9b6f736805669dc4e10 (diff)
downloadgcc-3dacfcad47a1e6dba0f2e4618f71f7d5310b0ede.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@172073 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog9
-rw-r--r--libstdc++-v3/include/ext/algorithm4
-rw-r--r--libstdc++-v3/include/ext/numeric5
-rw-r--r--libstdc++-v3/testsuite/ext/iota/cxx0x.cc28
-rw-r--r--libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc28
5 files changed, 73 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 0dd815f675a..cb122353965 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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
diff --git a/libstdc++-v3/include/ext/algorithm b/libstdc++-v3/include/ext/algorithm
index 368b5918058..417a03ab97c 100644
--- a/libstdc++-v3/include/ext/algorithm
+++ b/libstdc++-v3/include/ext/algorithm
@@ -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.
diff --git a/libstdc++-v3/include/ext/numeric b/libstdc++-v3/include/ext/numeric
index d4a367fca52..b389177f374 100644
--- a/libstdc++-v3/include/ext/numeric
+++ b/libstdc++-v3/include/ext/numeric
@@ -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
index 00000000000..84917adb420
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/iota/cxx0x.cc
@@ -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
index 00000000000..518716c510b
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc
@@ -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());
+}