summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/function/test/test_mixed_cxxstd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/function/test/test_mixed_cxxstd.cpp')
-rw-r--r--src/boost/libs/function/test/test_mixed_cxxstd.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/boost/libs/function/test/test_mixed_cxxstd.cpp b/src/boost/libs/function/test/test_mixed_cxxstd.cpp
new file mode 100644
index 000000000..6622ab373
--- /dev/null
+++ b/src/boost/libs/function/test/test_mixed_cxxstd.cpp
@@ -0,0 +1,48 @@
+
+// Copyright 2018 Peter Dimov.
+// Distributed under the Boost Software License, Version 1.0.
+
+#include <boost/function.hpp>
+#include <boost/core/lightweight_test.hpp>
+
+//
+
+void call_fn_1( boost::function<void()> const & fn );
+void call_fn_2( boost::function<void(int)> const & fn );
+void call_fn_3( boost::function<void(int, int)> const & fn );
+
+void call_fn_4( boost::function0<void> const & fn );
+void call_fn_5( boost::function1<void, int> const & fn );
+void call_fn_6( boost::function2<void, int, int> const & fn );
+
+//
+
+static int v;
+
+void f0()
+{
+ v = -1;
+}
+
+void f1( int x )
+{
+ v = x;
+}
+
+void f2( int x, int y )
+{
+ v = x + y;
+}
+
+int main()
+{
+ v = 0; call_fn_1( f0 ); BOOST_TEST_EQ( v, -1 );
+ v = 0; call_fn_2( f1 ); BOOST_TEST_EQ( v, 1 );
+ v = 0; call_fn_3( f2 ); BOOST_TEST_EQ( v, 3 );
+
+ v = 0; call_fn_4( f0 ); BOOST_TEST_EQ( v, -1 );
+ v = 0; call_fn_5( f1 ); BOOST_TEST_EQ( v, 1 );
+ v = 0; call_fn_6( f2 ); BOOST_TEST_EQ( v, 3 );
+
+ return boost::report_errors();
+}