1 // Copyright 2017 Peter Dimov.
2 // Distributed under the Boost Software License, Version 1.0.
3
4 #include <boost/tuple/tuple.hpp>
5 #include <boost/core/lightweight_test.hpp>
6 #include <boost/config.hpp>
7 #include <boost/config/pragma_message.hpp>
8
9 #if defined(BOOST_NO_CXX17_STRUCTURED_BINDINGS)
10
11 BOOST_PRAGMA_MESSAGE("Skipping structured bindings test, not supported")
main()12 int main() {}
13
14 #else
15
main()16 int main()
17 {
18 // make_tuple
19
20 {
21 auto [x1] = boost::make_tuple( 1 );
22 BOOST_TEST_EQ( x1, 1 );
23 }
24
25 {
26 auto [x1, x2] = boost::make_tuple( 1, 2 );
27 BOOST_TEST_EQ( x1, 1 );
28 BOOST_TEST_EQ( x2, 2 );
29 }
30
31 {
32 auto [x1, x2, x3] = boost::make_tuple( 1, 2, 3 );
33 BOOST_TEST_EQ( x1, 1 );
34 BOOST_TEST_EQ( x2, 2 );
35 BOOST_TEST_EQ( x3, 3 );
36 }
37
38 {
39 auto [x1, x2, x3, x4] = boost::make_tuple( 1, 2, 3, 4 );
40 BOOST_TEST_EQ( x1, 1 );
41 BOOST_TEST_EQ( x2, 2 );
42 BOOST_TEST_EQ( x3, 3 );
43 BOOST_TEST_EQ( x4, 4 );
44 }
45
46 // tuple
47
48 {
49 auto [x1] = boost::tuple<int>( 1 );
50 BOOST_TEST_EQ( x1, 1 );
51 }
52
53 {
54 auto [x1, x2] = boost::tuple<int, int>( 1, 2 );
55 BOOST_TEST_EQ( x1, 1 );
56 BOOST_TEST_EQ( x2, 2 );
57 }
58
59 {
60 auto [x1, x2, x3] = boost::tuple<int, int, int>( 1, 2, 3 );
61 BOOST_TEST_EQ( x1, 1 );
62 BOOST_TEST_EQ( x2, 2 );
63 BOOST_TEST_EQ( x3, 3 );
64 }
65
66 {
67 auto [x1, x2, x3, x4] = boost::tuple<int, int, int, int>( 1, 2, 3, 4 );
68 BOOST_TEST_EQ( x1, 1 );
69 BOOST_TEST_EQ( x2, 2 );
70 BOOST_TEST_EQ( x3, 3 );
71 BOOST_TEST_EQ( x4, 4 );
72 }
73
74 return boost::report_errors();
75 }
76
77 #endif
78