re PR libstdc++/39546 (parallel mode doesn't support implicit string conversion)

2009-05-06  Johannes Singler  <singler@ira.uka.de>

        PR libstdc++/39546
        * include/parallel/algo.h (find_switch):
        Parametrize binder2nd with const T& instead of T.
        * testsuite/25_algorithms/find/39546.cc: new test case

From-SVN: r147169
This commit is contained in:
Johannes Singler 2009-05-06 11:20:35 +00:00 committed by Johannes Singler
parent b92625409b
commit c8ecfecfd4
3 changed files with 52 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2009-05-06 Johannes Singler <singler@ira.uka.de>
PR libstdc++/39546
* include/parallel/algo.h (find_switch):
Parametrize binder2nd with const T& instead of T.
* testsuite/25_algorithms/find/39546.cc: new test case
2009-05-06 Paolo Carlini <paolo.carlini@oracle.com>
Revert:

View File

@ -149,8 +149,8 @@ namespace __parallel
if (_GLIBCXX_PARALLEL_CONDITION(true))
{
binder2nd<__gnu_parallel::equal_to<value_type, T> >
comp(__gnu_parallel::equal_to<value_type, T>(), val);
binder2nd<__gnu_parallel::equal_to<value_type, const T&> >
comp(__gnu_parallel::equal_to<value_type, const T&>(), val);
return __gnu_parallel::find_template(begin, end, begin, comp,
__gnu_parallel::
find_if_selector()).first;

View File

@ -0,0 +1,43 @@
// Copyright (C) 2009 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/>.
// 25.3.1 algorithms, find()
#include <vector>
#include <string>
#include <algorithm>
#include <testsuite_hooks.h>
// libstdc++/39546
void
test01()
{
bool test __attribute__((unused)) = true;
std::vector<std::string> dict;
dict.push_back("one");
dict.push_back("two");
dict.push_back("three");
VERIFY( std::find(dict.begin(), dict.end(), "two") == dict.begin() + 1 );
}
int
main()
{
test01();
}