From 00b68834a65301d3e02e0bee3c03db93d854b1ed Mon Sep 17 00:00:00 2001 From: vsol Date: Sat, 9 May 2020 13:13:55 +0300 Subject: [PATCH] Review fixes. --- include/fmt/core.h | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/include/fmt/core.h b/include/fmt/core.h index ef1534b7..edab4ac8 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -1271,16 +1271,13 @@ inline basic_format_arg make_arg(const T& value) { } template struct is_reference_wrapper : std::false_type {}; - template struct is_reference_wrapper> : std::true_type {}; -template struct unwrap_reference { using type = T; }; -template struct unwrap_reference> { - using type = T&; -}; -template -using unwrap_reference_t = typename unwrap_reference::type; +template const T& unwrap(const T& v) { return v; } +template const T& unwrap(const std::reference_wrapper& v) { + return static_cast(v); +} class dynamic_arg_list { // 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* zero_ptr{nullptr}; data_.insert(data_.begin(), {zero_ptr, 0}); } - data_.emplace_back(internal::make_arg( - static_cast&>(arg.value))); + data_.emplace_back( + internal::make_arg(internal::unwrap(arg.value))); auto pop_one = [](std::vector>* data) { data->pop_back(); }; @@ -1578,7 +1575,7 @@ class dynamic_format_arg_store if (internal::const_check(need_copy::value)) emplace_arg(dynamic_args_.push>(arg)); else - emplace_arg(static_cast&>(arg)); + emplace_arg(internal::unwrap(arg)); } /** @@ -1622,8 +1619,9 @@ class dynamic_format_arg_store if (internal::const_check(need_copy::value)) { emplace_arg( fmt::arg(arg_name, dynamic_args_.push>(arg.value))); - } else + } else { emplace_arg(fmt::arg(arg_name, arg.value)); + } } };