Commit 17a85cab authored by Dominik Charousset's avatar Dominik Charousset

Use if constexpr where appropriate

parent d5b15662
This diff is collapsed.
...@@ -52,25 +52,14 @@ config_value get_impl(const void* ptr) { ...@@ -52,25 +52,14 @@ config_value get_impl(const void* ptr) {
return config_value{trait::convert(*reinterpret_cast<const T*>(ptr))}; return config_value{trait::convert(*reinterpret_cast<const T*>(ptr))};
} }
template <class T>
typename std::enable_if<detail::has_clear_member<T>::value>::type
clear_before_parsing(T& xs) {
xs.clear();
}
template <class T>
typename std::enable_if<!detail::has_clear_member<T>::value>::type
clear_before_parsing(T&) {
// nop
}
template <class T> template <class T>
expected<config_value> parse_impl(T* ptr, string_view str) { expected<config_value> parse_impl(T* ptr, string_view str) {
if (!ptr) { if (!ptr) {
T tmp; T tmp;
return parse_impl(&tmp, str); return parse_impl(&tmp, str);
} }
clear_before_parsing(*ptr); if constexpr (detail::has_clear_member<T>::value)
ptr->clear();
using trait = select_config_value_access_t<T>; using trait = select_config_value_access_t<T>;
string_parser_state ps{str.begin(), str.end()}; string_parser_state ps{str.begin(), str.end()};
trait::parse_cli(ps, *ptr, top_level_cli_parsing); trait::parse_cli(ps, *ptr, top_level_cli_parsing);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment