• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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