diff --git a/include/fmt/core.h b/include/fmt/core.h index 0e7843b8..30ef27e0 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -200,6 +200,9 @@ # endif #endif +// An inline std::forward replacement. +#define FMT_FORWARD(T, value) static_cast(value) + #ifdef _MSC_VER # define FMT_UNCHECKED_ITERATOR(It) \ using _Unchecked_type = It // Mark iterator as checked. @@ -1708,7 +1711,7 @@ constexpr auto encode_types() -> unsigned long long { template FMT_CONSTEXPR FMT_INLINE auto make_value(T&& val) -> value { - const auto& arg = arg_mapper().map(std::forward(val)); + const auto& arg = arg_mapper().map(FMT_FORWARD(T, val)); constexpr bool formattable_char = !std::is_same::value; @@ -1875,7 +1878,7 @@ class format_arg_store data_{detail::make_arg< is_packed, Context, detail::mapped_type_constant, Context>::value>( - std::forward(args))...} { + FMT_FORWARD(T, args))...} { detail::init_named_args(data_.named_args(), 0, 0, args...); } }; @@ -1891,7 +1894,7 @@ class format_arg_store template constexpr auto make_format_args(Args&&... args) -> format_arg_store...> { - return {std::forward(args)...}; + return {FMT_FORWARD(Args, args)...}; } /**