1/*=============================================================================
2 Copyright (c) 2019 Nikita Kniazev
3
4 Use, modification and distribution is subject to the Boost Software
5 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 http://www.boost.org/LICENSE_1_0.txt)
7=============================================================================*/
8
9#include <boost/spirit/home/x3/support/unused.hpp>
10#include <type_traits>
11#include <iostream>
12
13void test_use(boost::spirit::x3::unused_type) {}
14
15int main()
16{
17 using boost::spirit::x3::unused;
18 using boost::spirit::x3::unused_type;
19
20 static_assert(std::is_trivial<unused_type>::value, "");
21
22 unused_type unused_mut;
23 static_assert(std::is_same<decltype((unused)), unused_type const&>::value, "");
24 static_assert(std::is_same<decltype((unused_mut)), unused_type&>::value, "");
25 static_assert(std::is_same<decltype(unused = 123), unused_type const&>::value, "");
26 static_assert(std::is_same<decltype(unused = unused), unused_type const&>::value, "");
27 static_assert(std::is_same<decltype(unused = unused_mut), unused_type const&>::value, "");
28 static_assert(std::is_same<decltype(unused_mut = 123), unused_type&>::value, "");
29 static_assert(std::is_same<decltype(unused_mut = unused), unused_type&>::value, "");
30 static_assert(std::is_same<decltype(unused_mut = unused_mut), unused_type&>::value, "");
31
32 test_use(0);
33 test_use(unused);
34 test_use(unused_mut);
35
36 std::cout << unused;
37 std::cout << unused_mut;
38 std::cin >> unused_mut;
39}
40

source code of boost/libs/spirit/test/x3/unused_type.cpp