// Origin: PR c++/46170 // { dg-do compile } namespace util { struct option_value { }; template struct options_map_impl { typedef T options_struct_type; typedef bool (*opt_func)(const option_value&, options_struct_type&); template static bool set_member_constant(const option_value&, options_struct_type&, V options_struct_type::*); template static bool set_member_constant(const option_value& opt, options_struct_type& t) { return set_member_constant(opt, t, mem); } }; } struct cflat_options { bool show_precharges; }; typedef util::options_map_impl options_map_impl_type; class register_options_modifier { typedef options_map_impl_type::opt_func modifier_type; public: register_options_modifier(); register_options_modifier(const char* Mode, const modifier_type COM, const char* h); }; static const register_options_modifier cflat_opt_mod_show_precharges("precharges", &options_map_impl_type::set_member_constant, "show precharge expressions"), cflat_opt_mod_no_show_precharges("no-" "precharges", &options_map_impl_type::set_member_constant, "hide precharge expressions");