99 auto const make = [](
S s = S::zero) {
return value_type { s }; };
101 enum outcome_type { nothrow, caught, bad_catch };
109 VERIFY( o && o->state == S::throwing_copy);
116 VERIFY( o && o->state == S::throwing_move);
120 ATTRIBUTE_UNUSED outcome_type outcome {};
122 value_type v = make(S::throwing_copy_assignment);
129 { outcome = caught; }
131 { outcome = bad_catch; }
133 VERIFY( o && o->state == S::threw );
137 ATTRIBUTE_UNUSED outcome_type outcome {};
139 value_type v = make(S::throwing_move_assignment);
146 { outcome = caught; }
148 { outcome = bad_catch; }
150 VERIFY( o && o->state == S::threw );
value_type(value_type const &other)
value_type(value_type &&other)
void throw_if(state_type match)
value_type & operator=(value_type &&other)
mixin_counter(mixin_counter const &)
value_type(state_type state_)
value_type & operator=(value_type const &other)