111
|
1 // PR c++/50972
|
|
2 // { dg-do compile { target c++11 } }
|
|
3 // Ignore all errors, we're just testing that this doesn't ICE
|
|
4 // { dg-prune-output "error" }
|
|
5
|
|
6 namespace std
|
|
7 typedef long unsigned int size_t;
|
|
8 template<typename...>
|
|
9 struct __and_;
|
|
10 template<typename _Tp>
|
|
11 struct is_nothrow_move_constructible
|
|
12 {
|
|
13 };
|
|
14 template<typename _Tp>
|
|
15 struct is_nothrow_move_assignable
|
|
16 struct __add_rvalue_reference_helper<_Tp, true>
|
|
17 { typedef _Tp&& type; };
|
|
18 template<typename _Tp>
|
|
19 struct add_rvalue_reference
|
|
20 : public __add_rvalue_reference_helper<_Tp>
|
|
21 {
|
|
22 };
|
|
23 template<typename _Tp>
|
|
24 inline typename add_rvalue_reference<_Tp>::type
|
|
25 declval() noexcept
|
|
26 {
|
|
27 }
|
|
28 }
|
|
29 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
|
|
30 template<typename _Tp>
|
|
31 class new_allocator
|
|
32 {
|
|
33 };
|
|
34 }
|
|
35 namespace std __attribute__ ((__visibility__ ("default")))
|
|
36 class allocator: public __gnu_cxx::new_allocator<_Tp>
|
|
37 {
|
|
38 template<typename _Tp1>
|
|
39 struct rebind
|
|
40 { typedef allocator<_Tp1> other; };
|
|
41 };
|
|
42 }
|
|
43 namespace std __attribute__ ((__visibility__ ("default")))
|
|
44 template<typename _Alloc, typename _Tp>
|
|
45 struct __alloctr_rebind<_Alloc, _Tp, true>
|
|
46 {
|
|
47 typedef typename _Alloc::template rebind<_Tp>::other __type;
|
|
48 };
|
|
49 template<typename _Alloc>
|
|
50 struct allocator_traits
|
|
51 {
|
|
52 template<typename _Tp>
|
|
53 struct __rebind_alloc
|
|
54 {
|
|
55 typedef typename __alloctr_rebind<_Alloc, _Tp>::__type __type;
|
|
56 };
|
|
57 }
|
|
58 }
|
|
59 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
|
|
60 template<typename _Alloc>
|
|
61 struct __alloc_traits
|
|
62 {
|
|
63 typedef std::allocator_traits<_Alloc> _Base_type;
|
|
64 static constexpr bool _S_nothrow_swap()
|
|
65 {
|
|
66 return !_S_propagate_on_swap()
|
|
67 || noexcept(swap(std::declval<_Alloc&>(), std::declval<_Alloc&>()));
|
|
68 }
|
|
69 template<typename _Tp>
|
|
70 struct rebind
|
|
71 { typedef typename _Base_type::template __rebind_alloc<_Tp>::__type other; };
|
|
72 };
|
|
73 }
|
|
74 namespace std __attribute__ ((__visibility__ ("default")))
|
|
75 template<typename _Tp, typename _Alloc>
|
|
76 struct _Vector_base
|
|
77 {
|
|
78 typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
|
|
79 rebind<_Tp>::other _Tp_alloc_type;
|
|
80 };
|
|
81 template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
|
|
82 class vector : protected _Vector_base<_Tp, _Alloc>
|
|
83 {
|
|
84 typedef _Vector_base<_Tp, _Alloc> _Base;
|
|
85 typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
|
|
86 typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits;
|
|
87 swap(vector& __x)
|
|
88 noexcept(_Alloc_traits::_S_nothrow_swap());
|
|
89 };
|
|
90 }
|
|
91 namespace lexertl
|
|
92 namespace detail
|
|
93 }
|
|
94 namespace detail
|
|
95 template<typename id_type>
|
|
96 struct basic_internals
|
|
97 {
|
|
98 typedef std::vector<id_type> id_type_vector;
|
|
99 };
|
|
100 };
|
|
101 template<typename char_type, typename id_type = std::size_t>
|
|
102 class basic_state_machine
|
|
103 {
|
|
104 typedef detail::basic_internals<id_type> internals;
|
|
105 void minimise ()
|
|
106 {
|
|
107 minimise_dfa (dfa_alphabet_, *dfa_, size_);
|
|
108 }
|
|
109 typedef typename internals::id_type_vector id_type_vector;
|
|
110 void minimise_dfa (const id_type dfa_alphabet_,
|
|
111 id_type_vector &dfa_, std::size_t size_)
|
|
112 {
|
|
113 id_type_vector new_dfa_ (front_, front_ + dfa_alphabet_);
|
|
114 dfa_.swap (new_dfa_);
|
|
115 }
|
|
116 }
|
|
117 }
|
|
118 namespace std __attribute__ ((__visibility__ ("default")))
|
|
119 template<typename _Tp>
|
|
120 void
|
|
121 swap(_Tp&, _Tp&)
|
|
122 noexcept(__and_<is_nothrow_move_constructible<_Tp>,
|
|
123 is_nothrow_move_assignable<_Tp>>::value)
|
|
124 ;
|
|
125 typedef lexertl::basic_state_machine<char32_t> lexstate;
|
|
126 lexstate m_state_machine;
|
131
|
127 void GenerateLexer()
|
111
|
128 {
|
|
129 m_state_machine.minimise();
|
|
130 }
|