Review fixes.

This commit is contained in:
vsol 2020-05-09 13:13:55 +03:00
parent 5f6f93b7e5
commit 00b68834a6

View File

@ -1271,16 +1271,13 @@ inline basic_format_arg<Context> make_arg(const T& value) {
} }
template <typename T> struct is_reference_wrapper : std::false_type {}; template <typename T> struct is_reference_wrapper : std::false_type {};
template <typename T> template <typename T>
struct is_reference_wrapper<std::reference_wrapper<T>> : std::true_type {}; struct is_reference_wrapper<std::reference_wrapper<T>> : std::true_type {};
template <typename T> struct unwrap_reference { using type = T; }; template <typename T> const T& unwrap(const T& v) { return v; }
template <typename T> struct unwrap_reference<std::reference_wrapper<T>> { template <typename T> const T& unwrap(const std::reference_wrapper<T>& v) {
using type = T&; return static_cast<const T&>(v);
}; }
template <typename T>
using unwrap_reference_t = typename unwrap_reference<T>::type;
class dynamic_arg_list { class dynamic_arg_list {
// Workaround for clang's -Wweak-vtables. Unlike for regular classes, for // Workaround for clang's -Wweak-vtables. Unlike for regular classes, for
@ -1541,8 +1538,8 @@ class dynamic_format_arg_store
constexpr const internal::named_arg_info<char_type>* zero_ptr{nullptr}; constexpr const internal::named_arg_info<char_type>* zero_ptr{nullptr};
data_.insert(data_.begin(), {zero_ptr, 0}); data_.insert(data_.begin(), {zero_ptr, 0});
} }
data_.emplace_back(internal::make_arg<Context>( data_.emplace_back(
static_cast<const internal::unwrap_reference_t<T>&>(arg.value))); internal::make_arg<Context>(internal::unwrap(arg.value)));
auto pop_one = [](std::vector<basic_format_arg<Context>>* data) { auto pop_one = [](std::vector<basic_format_arg<Context>>* data) {
data->pop_back(); data->pop_back();
}; };
@ -1578,7 +1575,7 @@ class dynamic_format_arg_store
if (internal::const_check(need_copy<T>::value)) if (internal::const_check(need_copy<T>::value))
emplace_arg(dynamic_args_.push<stored_type<T>>(arg)); emplace_arg(dynamic_args_.push<stored_type<T>>(arg));
else else
emplace_arg(static_cast<const internal::unwrap_reference_t<T>&>(arg)); emplace_arg(internal::unwrap(arg));
} }
/** /**
@ -1622,8 +1619,9 @@ class dynamic_format_arg_store
if (internal::const_check(need_copy<T>::value)) { if (internal::const_check(need_copy<T>::value)) {
emplace_arg( emplace_arg(
fmt::arg(arg_name, dynamic_args_.push<stored_type<T>>(arg.value))); fmt::arg(arg_name, dynamic_args_.push<stored_type<T>>(arg.value)));
} else } else {
emplace_arg(fmt::arg(arg_name, arg.value)); emplace_arg(fmt::arg(arg_name, arg.value));
}
} }
}; };