summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/python/test/result.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/python/test/result.cpp')
-rw-r--r--src/boost/libs/python/test/result.cpp111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/boost/libs/python/test/result.cpp b/src/boost/libs/python/test/result.cpp
new file mode 100644
index 000000000..d5f43cc3d
--- /dev/null
+++ b/src/boost/libs/python/test/result.cpp
@@ -0,0 +1,111 @@
+// Copyright David Abrahams 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+#include <boost/python/detail/result.hpp>
+#include <boost/type.hpp>
+#include <functional>
+
+using boost::python::detail::result;
+using boost::type;
+
+void expect_int(type<int>*) {}
+void expect_string(type<char*>*) {}
+
+struct X {};
+
+int main()
+{
+ // Test the usage which works for functions, member functions, and data members
+ expect_int(
+ result((int(*)())0)
+ );
+
+ expect_int(
+ result((int(*)(char))0)
+ );
+
+ expect_int(
+ result((int(X::*)())0)
+ );
+
+ expect_int(
+ result((int(X::*)(char))0)
+ );
+
+ expect_int(
+ result((int(X::*))0)
+ );
+
+ expect_string(
+ result((char*(*)())0)
+ );
+
+ expect_string(
+ result((char*(*)(char))0)
+ );
+
+ expect_string(
+ result((char*(X::*)())0)
+ );
+
+ expect_string(
+ result((char*(X::*)(char))0)
+ );
+
+ expect_string(
+ result((char*(X::*))0)
+ );
+
+ // Show that we can use the general version that works for
+ // AdaptableFunctions
+ expect_int(
+ result((int(*)())0,0)
+ );
+
+ expect_int(
+ result((int(*)(char))0,0)
+ );
+
+ expect_int(
+ result((int(X::*)())0,0)
+ );
+
+ expect_int(
+ result((int(X::*)(char))0,0)
+ );
+
+ expect_int(
+ result((int(X::*))0,0)
+ );
+
+ expect_int(
+ result(std::plus<int>(),0)
+ );
+
+ expect_string(
+ result((char*(*)())0,0)
+ );
+
+ expect_string(
+ result((char*(*)(char))0,0)
+ );
+
+ expect_string(
+ result((char*(X::*)())0,0)
+ );
+
+ expect_string(
+ result((char*(X::*)(char))0,0)
+ );
+
+ expect_string(
+ result((char*(X::*))0,0)
+ );
+
+ expect_string(
+ result(std::plus<char*>(),0)
+ );
+
+ return 0;
+}