In C++0x mode, import iota and is_sorted from namespace std into namespace __gnu_cxx to avoid ambiguous call errors.

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
This commit is contained in:
Jeffrey Yasskin 2011-04-07 04:11:12 +00:00 committed by Jeffrey Yasskin
parent 030759ae91
commit 7c16382a3a
5 changed files with 73 additions and 1 deletions

View 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

View 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.

View 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

View File

@ -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);
}

View File

@ -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());
}