OSDN Git Service

b58314466183c5a82b8eebe9feb7a2b9c65b6ed5
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / 20_util / headers / functional / synopsis.cc
1 // { dg-do compile }
2
3 // Copyright (C) 2007, 2009 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.
10
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.
15
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/>.
19
20 #include <functional>
21
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;
26
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;
34
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;
42
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;
47
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&);
55
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&);
63
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));
73
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));
87
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);
100 }