Reverting merge from trunk
[official-gcc.git] / libstdc++-v3 / testsuite / 20_util / headers / functional / synopsis.cc
blob7fb7d59ba7593eb694a3e26c2adbb84347f37084
1 // { dg-do compile }
3 // Copyright (C) 2007-2013 Free Software Foundation, Inc.
4 //
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 3, or (at your option)
9 // any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING3. If not see
18 // <http://www.gnu.org/licenses/>.
20 #include <functional>
22 namespace std {
23 // lib.base, base:
24 template <class Arg, class Result> struct unary_function;
25 template <class Arg1, class Arg2, class Result> struct binary_function;
27 // lib.arithmetic.operations, arithmetic operations:
28 template <class T> struct plus;
29 template <class T> struct minus;
30 template <class T> struct multiplies;
31 template <class T> struct divides;
32 template <class T> struct modulus;
33 template <class T> struct negate;
35 // lib.comparisons, comparisons:
36 template <class T> struct equal_to;
37 template <class T> struct not_equal_to;
38 template <class T> struct greater;
39 template <class T> struct less;
40 template <class T> struct greater_equal;
41 template <class T> struct less_equal;
43 // lib.logical.operations, logical operations:
44 template <class T> struct logical_and;
45 template <class T> struct logical_or;
46 template <class T> struct logical_not;
48 // lib.negators, negators:
49 template <class Predicate> struct unary_negate;
50 template <class Predicate>
51 unary_negate<Predicate> not1(const Predicate&);
52 template <class Predicate> struct binary_negate;
53 template <class Predicate>
54 binary_negate<Predicate> not2(const Predicate&);
56 // lib.binders, binders:
57 template <class Operation> class binder1st;
58 template <class Operation, class T>
59 binder1st<Operation> bind1st(const Operation&, const T&);
60 template <class Operation> class binder2nd;
61 template <class Operation, class T>
62 binder2nd<Operation> bind2nd(const Operation&, const T&);
64 // lib.function.pointer.adaptors, adaptors:
65 template <class Arg, class Result> class pointer_to_unary_function;
66 template <class Arg, class Result>
67 pointer_to_unary_function<Arg,Result> ptr_fun(Result (*)(Arg));
68 template <class Arg1, class Arg2, class Result>
69 class pointer_to_binary_function;
70 template <class Arg1, class Arg2, class Result>
71 pointer_to_binary_function<Arg1,Arg2,Result>
72 ptr_fun(Result (*)(Arg1,Arg2));
74 // lib.member.pointer.adaptors, adaptors:
75 template<class S, class T> class mem_fun_t;
76 template<class S, class T, class A> class mem_fun1_t;
77 template<class S, class T>
78 mem_fun_t<S,T> mem_fun(S (T::*f)());
79 template<class S, class T, class A>
80 mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A));
81 template<class S, class T> class mem_fun_ref_t;
82 template<class S, class T, class A> class mem_fun1_ref_t;
83 template<class S, class T>
84 mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)());
85 template<class S, class T, class A>
86 mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A));
88 template <class S, class T> class const_mem_fun_t;
89 template <class S, class T, class A> class const_mem_fun1_t;
90 template <class S, class T>
91 const_mem_fun_t<S,T> mem_fun(S (T::*f)() const);
92 template <class S, class T, class A>
93 const_mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A) const);
94 template <class S, class T> class const_mem_fun_ref_t;
95 template <class S, class T, class A> class const_mem_fun1_ref_t;
96 template <class S, class T>
97 const_mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)() const);
98 template <class S, class T, class A>
99 const_mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A) const);