Fix buffer<T>::append not found

This commit is contained in:
Shawn Zhong 2023-04-29 05:36:54 -05:00
parent 11c3634d6f
commit 5dca745a49
3 changed files with 15 additions and 19 deletions

View File

@ -504,7 +504,7 @@ FMT_BEGIN_EXPORT
template <typename CompiledFormat, typename... Args,
typename Char = typename CompiledFormat::char_type,
FMT_ENABLE_IF(detail::is_compiled_format<CompiledFormat>::value)>
FMT_CONSTEXPR20 FMT_INLINE std::basic_string<Char> format(
FMT_CONSTEXPR_LIB FMT_INLINE std::basic_string<Char> format(
const CompiledFormat& cf, const Args&... args) {
auto s = std::basic_string<Char>();
cf.format(std::back_inserter(s), args...);
@ -520,7 +520,7 @@ constexpr FMT_INLINE OutputIt format_to(OutputIt out, const CompiledFormat& cf,
template <typename S, typename... Args,
FMT_ENABLE_IF(detail::is_compiled_string<S>::value)>
FMT_INLINE FMT_CONSTEXPR20 std::basic_string<typename S::char_type> format(
FMT_INLINE FMT_CONSTEXPR_LIB std::basic_string<typename S::char_type> format(
const S&, Args&&... args) {
if constexpr (std::is_same<typename S::char_type, char>::value) {
constexpr auto str = basic_string_view<typename S::char_type>(S());

View File

@ -792,7 +792,7 @@ FMT_MODULE_EXPORT template <typename Context> class basic_format_args;
FMT_MODULE_EXPORT template <typename Context> class dynamic_format_arg_store;
// A formatter for objects of type T.
FMT_MODULE_EXPORT
FMT_MODULE_EXPORT
template <typename T, typename Char = char, typename Enable = void>
struct formatter {
// A deleted default constructor indicates a disabled formatter.
@ -941,7 +941,18 @@ template <typename T> class buffer {
/** Appends data to the end of the buffer. */
template <typename U>
void FMT_CONSTEXPR append(const U* begin, const U* end);
FMT_CONSTEXPR void append(const U* begin, const U* end) {
while (begin != end) {
auto count = to_unsigned(end - begin);
try_reserve(size_ + count);
auto free_cap = capacity_ - size_;
if (free_cap < count) count = free_cap;
auto out = make_checked(ptr_ + size_, count);
for (size_t i = 0; i < count; ++i) *out++ = begin[i];
size_ += count;
begin += count;
}
}
template <typename Idx> FMT_CONSTEXPR auto operator[](Idx index) -> T& {
return ptr_[index];

View File

@ -875,21 +875,6 @@ using is_double_double = bool_constant<std::numeric_limits<T>::digits == 106>;
# define FMT_USE_FULL_CACHE_DRAGONBOX 0
#endif
template <typename T>
template <typename U>
FMT_CONSTEXPR void buffer<T>::append(const U* begin, const U* end) {
while (begin != end) {
auto count = to_unsigned(end - begin);
try_reserve(size_ + count);
auto free_cap = capacity_ - size_;
if (free_cap < count) count = free_cap;
auto out = make_checked(ptr_ + size_, count);
for (size_t i = 0; i < count; ++i) *out++ = begin[i];
size_ += count;
begin += count;
}
}
template <typename T, typename Enable = void>
struct is_locale : std::false_type {};
template <typename T>