URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-stable/gcc-4.5.1/libstdc++-v3/testsuite/20_util/reference_wrapper
- from Rev 816 to Rev 826
- ↔ Reverse comparison
Rev 816 → Rev 826
/invoke.cc
0,0 → 1,94
// { dg-options "-std=gnu++0x" } |
|
// Copyright (C) 2008, 2009, 2010 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 <functional> |
#include <type_traits> |
#include <testsuite_hooks.h> |
#include <testsuite_tr1.h> |
|
using namespace __gnu_test; |
|
bool test __attribute__((unused)) = true; |
|
struct X |
{ |
typedef int result_type; |
|
X() : bar(17) {} |
|
int foo(float x) { return truncate_float(x); } |
int foo_c(float x) const { return truncate_float(x); } |
int foo_v(float x) volatile { return truncate_float(x); } |
int foo_cv(float x) const volatile { return truncate_float(x); } |
|
int operator()(float x) |
{ |
return foo(x) + 1; |
} |
|
int operator()(float x) const |
{ |
return foo_c(x) + 2; |
} |
|
int bar; |
|
private: |
X(const X&); |
X& operator=(const X&); |
}; |
|
int seventeen() { return 17; } |
|
struct get_seventeen |
{ |
typedef int result_type; |
int operator()() const { return 17; } |
}; |
|
void test01() |
{ |
using std::ref; |
using std::cref; |
|
::get_seventeen get_sev; |
::X x; |
|
const float pi = 3.14; |
|
// Functions |
VERIFY(ref(truncate_float)(pi) == 3); |
VERIFY(ref(seventeen)() == 17); |
|
// Function pointers |
VERIFY(cref(&truncate_float)(pi) == 3); |
VERIFY(cref(&seventeen)() == 17); |
|
// Function objects |
VERIFY(ref(get_sev)() == 17); |
VERIFY(cref(get_sev)() == 17); |
VERIFY(ref(x)(pi) == 4); |
VERIFY(cref(x)(pi) == 5); |
} |
|
int main() |
{ |
test01(); |
return 0; |
} |
/24803.cc
0,0 → 1,70
// { dg-options "-std=gnu++0x" } |
// { dg-do compile } |
|
// Copyright (C) 2008, 2009, 2010 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 <functional> |
|
struct test_type |
{ |
int member(); |
int cmember()const; |
int member2(char); |
int cmember2(char)const; |
}; |
|
struct functor1 : public std::unary_function<int, double> |
{ |
double operator()(int) const; |
}; |
|
struct functor2 : public std::binary_function<int, char, double> |
{ |
double operator()(int, char) const; |
}; |
|
template <class T> |
void verify_return_type(T, T) |
{ |
} |
|
void test01() |
{ |
int zero; |
|
std::reference_wrapper<double (int)>* pr1(0); |
verify_return_type((*pr1)(0), double()); |
std::reference_wrapper<double (*)(int)>* pr2(0); |
verify_return_type((*pr2)(0), double()); |
std::reference_wrapper<functor1>* pr5(0); |
|
// libstdc++/24803 |
verify_return_type((*pr5)(0), double()); |
verify_return_type((*pr5)(zero), double()); |
|
std::reference_wrapper<double (int, char)>* pr1b(0); |
verify_return_type((*pr1b)(0, 0), double()); |
std::reference_wrapper<double (*)(int, char)>* pr2b(0); |
verify_return_type((*pr2b)(0, 0), double()); |
std::reference_wrapper<functor2>* pr5b(0); |
|
// libstdc++/24803 |
verify_return_type((*pr5b)(0, 0), double()); |
verify_return_type((*pr5b)(zero, zero), double()); |
} |
/typedefs.cc
0,0 → 1,87
// { dg-options "-std=gnu++0x" } |
|
// Copyright (C) 2008, 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/>. |
|
#include <functional> |
#include <type_traits> |
#include <testsuite_hooks.h> |
#include <testsuite_tr1.h> |
|
using namespace __gnu_test; |
|
struct X {}; |
|
struct int_result_type { typedef int result_type; }; |
|
struct derives_unary : std::unary_function<int, int> {}; |
|
struct derives_binary : std::binary_function<int, float, int> {}; |
|
struct derives_unary_binary |
: std::unary_function<int, int>, |
std::binary_function<int, float, int> |
{ |
typedef int result_type; |
}; |
|
void test01() |
{ |
bool test __attribute__((unused)) = true; |
|
using std::reference_wrapper; |
using std::is_same; |
using std::is_convertible; |
using std::unary_function; |
using std::binary_function; |
|
// Check result_type typedef |
VERIFY((is_same<reference_wrapper<int_result_type>::result_type, int>::value)); |
VERIFY((is_same<reference_wrapper<derives_unary>::result_type, int>::value)); |
VERIFY((is_same<reference_wrapper<derives_binary>::result_type, int>::value)); |
VERIFY((is_same<reference_wrapper<derives_unary_binary>::result_type, int>::value)); |
VERIFY((is_same<reference_wrapper<int(void)>::result_type, int>::value)); |
VERIFY((is_same<reference_wrapper<int(*)(void)>::result_type, int>::value)); |
VERIFY((is_same<reference_wrapper<int (::X::*)()>::result_type, int>::value)); |
VERIFY((is_same<reference_wrapper<int (::X::*)(float)>::result_type, int>::value)); |
|
// Check derivation from unary_function |
VERIFY((is_convertible<reference_wrapper<derives_unary>*, unary_function<int, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<derives_unary_binary>*, unary_function<int, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int(int)>*, unary_function<int, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int(*)(int)>*, unary_function<int, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int (::X::*)()>*, unary_function< ::X*, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int (::X::*)() const>*, unary_function<const ::X*, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int (::X::*)() volatile>*, unary_function<volatile ::X*, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int (::X::*)() const volatile>*, unary_function<const volatile ::X*, int>*>::value)); |
|
// Check derivation from binary_function |
VERIFY((is_convertible<reference_wrapper<derives_binary>*, binary_function<int, float, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<derives_unary_binary>*, binary_function<int, float, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int(int, float)>*, binary_function<int, float, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int(*)(int, float)>*, binary_function<int, float, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int (::X::*)(float)>*, binary_function< ::X*, float, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int (::X::*)(float) const>*, binary_function<const ::X*, float, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int (::X::*)(float) volatile>*, binary_function<volatile ::X*, float, int>*>::value)); |
VERIFY((is_convertible<reference_wrapper<int (::X::*)(float) const volatile>*, binary_function<const volatile ::X*, float, int>*>::value)); |
} |
|
int main() |
{ |
test01(); |
return 0; |
} |