@@ -148,7 +148,7 @@ void OptionsParser<Options>::Implies(const std::string& from,
148148 CHECK_NE (it, options_.end ());
149149 CHECK_EQ (it->second .type , kBoolean );
150150 implications_.emplace (from, Implication {
151- std::static_pointer_cast<OptionField< bool >>( it->second .field ) , true
151+ it->second .field , true
152152 });
153153}
154154
@@ -159,7 +159,7 @@ void OptionsParser<Options>::ImpliesNot(const std::string& from,
159159 CHECK_NE (it, options_.end ());
160160 CHECK_EQ (it->second .type , kBoolean );
161161 implications_.emplace (from, Implication {
162- std::static_pointer_cast<OptionField< bool >>( it->second .field ) , false
162+ it->second .field , false
163163 });
164164}
165165
@@ -205,8 +205,7 @@ auto OptionsParser<Options>::Convert(
205205 typename OptionsParser<ChildOptions>::Implication original,
206206 ChildOptions* (Options::* get_child)()) {
207207 return Implication {
208- std::static_pointer_cast<OptionField<bool >>(
209- Convert (original.target_field , get_child)),
208+ Convert (original.target_field , get_child),
210209 original.target_value
211210 };
212211}
@@ -378,8 +377,10 @@ void OptionsParser<Options>::Parse(
378377
379378 {
380379 auto implications = implications_.equal_range (name);
381- for (auto it = implications.first ; it != implications.second ; ++it)
382- *it->second .target_field ->Lookup (options) = it->second .target_value ;
380+ for (auto it = implications.first ; it != implications.second ; ++it) {
381+ *it->second .target_field ->template Lookup <bool >(options) =
382+ it->second .target_value ;
383+ }
383384 }
384385
385386 const OptionInfo& info = it->second ;
0 commit comments