summaryrefslogtreecommitdiff
path: root/libs/python/test/result.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2013-06-25 22:59:01 +0000
committer <>2013-09-27 11:49:28 +0000
commit8c4528713d907ee2cfd3bfcbbad272c749867f84 (patch)
treec09e2ce80f47b90c85cc720f5139089ad9c8cfff /libs/python/test/result.cpp
downloadboost-tarball-baserock/morph.tar.gz
Imported from /home/lorry/working-area/delta_boost-tarball/boost_1_54_0.tar.bz2.boost_1_54_0baserock/morph
Diffstat (limited to 'libs/python/test/result.cpp')
-rw-r--r--libs/python/test/result.cpp111
1 files changed, 111 insertions, 0 deletions
diff --git a/libs/python/test/result.cpp b/libs/python/test/result.cpp
new file mode 100644
index 000000000..d5f43cc3d
--- /dev/null
+++ b/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;
+}