• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright David Abrahams 2002.
2 // Distributed under the Boost Software License, Version 1.0. (See
3 // accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
5 #include <boost/python/detail/result.hpp>
6 #include <boost/type.hpp>
7 #include <functional>
8 
9 using boost::python::detail::result;
10 using boost::type;
11 
expect_int(type<int> *)12 void expect_int(type<int>*) {}
expect_string(type<char * > *)13 void expect_string(type<char*>*) {}
14 
15 struct X {};
16 
main()17 int main()
18 {
19     // Test the usage which works for functions, member functions, and data members
20     expect_int(
21         result((int(*)())0)
22         );
23 
24     expect_int(
25         result((int(*)(char))0)
26         );
27 
28     expect_int(
29         result((int(X::*)())0)
30         );
31 
32     expect_int(
33         result((int(X::*)(char))0)
34         );
35 
36     expect_int(
37         result((int(X::*))0)
38         );
39 
40     expect_string(
41         result((char*(*)())0)
42         );
43 
44     expect_string(
45         result((char*(*)(char))0)
46         );
47 
48     expect_string(
49         result((char*(X::*)())0)
50         );
51 
52     expect_string(
53         result((char*(X::*)(char))0)
54         );
55 
56     expect_string(
57         result((char*(X::*))0)
58         );
59 
60     // Show that we can use the general version that works for
61     // AdaptableFunctions
62     expect_int(
63         result((int(*)())0,0)
64         );
65 
66     expect_int(
67         result((int(*)(char))0,0)
68         );
69 
70     expect_int(
71         result((int(X::*)())0,0)
72         );
73 
74     expect_int(
75         result((int(X::*)(char))0,0)
76         );
77 
78     expect_int(
79         result((int(X::*))0,0)
80         );
81 
82     expect_int(
83         result(std::plus<int>(),0)
84         );
85 
86     expect_string(
87         result((char*(*)())0,0)
88         );
89 
90     expect_string(
91         result((char*(*)(char))0,0)
92         );
93 
94     expect_string(
95         result((char*(X::*)())0,0)
96         );
97 
98     expect_string(
99         result((char*(X::*)(char))0,0)
100         );
101 
102     expect_string(
103         result((char*(X::*))0,0)
104         );
105 
106     expect_string(
107         result(std::plus<char*>(),0)
108         );
109 
110     return 0;
111 }
112