1 // Origin: PR c++/46170
7 template <class T> struct options_map_impl {
8 typedef T options_struct_type;
9 typedef bool (*opt_func)(const option_value&, options_struct_type&);
10 template <class V, V K> static bool set_member_constant(const option_value&,
11 options_struct_type&, V options_struct_type::*);
12 template <class V, V options_struct_type::*mem, V K> static bool
13 set_member_constant(const option_value& opt, options_struct_type& t) {
14 return set_member_constant<V,K>(opt, t, mem);
18 struct cflat_options {
21 typedef util::options_map_impl<cflat_options> options_map_impl_type;
22 class register_options_modifier {
23 typedef options_map_impl_type::opt_func modifier_type;
24 public: register_options_modifier();
25 register_options_modifier(const char* Mode, const modifier_type COM,
28 static const register_options_modifier
29 cflat_opt_mod_show_precharges("precharges",
30 &options_map_impl_type::set_member_constant<bool,
31 &cflat_options::show_precharges, true>, "show precharge expressions"),
32 cflat_opt_mod_no_show_precharges("no-" "precharges",
33 &options_map_impl_type::set_member_constant<bool,
34 &cflat_options::show_precharges, false>, "hide precharge expressions");