• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright Abel Sinkovics (abel@sinkovics.hu) 2015.
2 // Distributed under the Boost Software License, Version 1.0.
3 //    (See accompanying file LICENSE_1_0.txt or copy at
4 //          http://www.boost.org/LICENSE_1_0.txt)
5 
6 #include <boost/metaparse/v1/swap.hpp>
7 
8 #include <boost/type_traits/is_same.hpp>
9 
10 #include <boost/mpl/assert.hpp>
11 
12 #include "test_case.hpp"
13 
14 namespace
15 {
16   struct returns_first
17   {
18     typedef returns_first type;
19 
20     template <class A, class>
21     struct apply
22     {
23       typedef A type;
24     };
25   };
26 
27   struct returns_second
28   {
29     typedef returns_second type;
30 
31     template <class, class B>
32     struct apply
33     {
34       typedef B type;
35     };
36   };
37 }
38 
BOOST_METAPARSE_TEST_CASE(swap)39 BOOST_METAPARSE_TEST_CASE(swap)
40 {
41   using boost::metaparse::v1::swap;
42   using boost::is_same;
43 
44   BOOST_MPL_ASSERT((
45     is_same<double, swap<returns_first>::apply<int, double>::type>
46   ));
47 
48   BOOST_MPL_ASSERT((
49     is_same<int, swap<returns_second>::apply<int, double>::type>
50   ));
51 }
52 
53