mirror of
https://github.com/fmtlib/fmt.git
synced 2024-11-06 23:30:29 +00:00
Workaround an issue with mixing std versions in gcc (#2017)
This commit is contained in:
parent
a57baa69a5
commit
df66516ed3
@ -1145,8 +1145,8 @@ template <typename T = void> struct null {};
|
|||||||
template <typename Char> struct fill_t {
|
template <typename Char> struct fill_t {
|
||||||
private:
|
private:
|
||||||
enum { max_size = 4 };
|
enum { max_size = 4 };
|
||||||
Char data_[max_size];
|
Char data_[max_size] = {Char(' '), Char(0), Char(0), Char(0)};
|
||||||
unsigned char size_;
|
unsigned char size_ = 1;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FMT_CONSTEXPR void operator=(basic_string_view<Char> s) {
|
FMT_CONSTEXPR void operator=(basic_string_view<Char> s) {
|
||||||
@ -1166,13 +1166,6 @@ template <typename Char> struct fill_t {
|
|||||||
FMT_CONSTEXPR const Char& operator[](size_t index) const {
|
FMT_CONSTEXPR const Char& operator[](size_t index) const {
|
||||||
return data_[index];
|
return data_[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
static FMT_CONSTEXPR fill_t<Char> make() {
|
|
||||||
auto fill = fill_t<Char>();
|
|
||||||
fill[0] = Char(' ');
|
|
||||||
fill.size_ = 1;
|
|
||||||
return fill;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
@ -1204,8 +1197,7 @@ template <typename Char> struct basic_format_specs {
|
|||||||
type(0),
|
type(0),
|
||||||
align(align::none),
|
align(align::none),
|
||||||
sign(sign::none),
|
sign(sign::none),
|
||||||
alt(false),
|
alt(false) {}
|
||||||
fill(detail::fill_t<Char>::make()) {}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
using format_specs = basic_format_specs<char>;
|
using format_specs = basic_format_specs<char>;
|
||||||
|
@ -2423,17 +2423,17 @@ TEST(FormatTest, CharTraitsIsNotAmbiguous) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if __cplusplus > 201103L
|
||||||
struct custom_char {
|
struct custom_char {
|
||||||
int value;
|
int value;
|
||||||
custom_char() = default;
|
custom_char() = default;
|
||||||
|
|
||||||
template <typename T> custom_char(T val) : value(static_cast<int>(val)) {}
|
template <typename T>
|
||||||
|
constexpr custom_char(T val) : value(static_cast<int>(val)) {}
|
||||||
|
|
||||||
operator int() const { return value; }
|
operator int() const { return value; }
|
||||||
};
|
};
|
||||||
|
|
||||||
int to_ascii(custom_char c) { return c; }
|
|
||||||
|
|
||||||
FMT_BEGIN_NAMESPACE
|
FMT_BEGIN_NAMESPACE
|
||||||
template <> struct is_char<custom_char> : std::true_type {};
|
template <> struct is_char<custom_char> : std::true_type {};
|
||||||
FMT_END_NAMESPACE
|
FMT_END_NAMESPACE
|
||||||
@ -2444,6 +2444,7 @@ TEST(FormatTest, FormatCustomChar) {
|
|||||||
EXPECT_EQ(result.size(), 1);
|
EXPECT_EQ(result.size(), 1);
|
||||||
EXPECT_EQ(result[0], custom_char('x'));
|
EXPECT_EQ(result[0], custom_char('x'));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Convert a char8_t string to std::string. Otherwise GTest will insist on
|
// Convert a char8_t string to std::string. Otherwise GTest will insist on
|
||||||
// inserting `char8_t` NTBS into a `char` stream which is disabled by P1423.
|
// inserting `char8_t` NTBS into a `char` stream which is disabled by P1423.
|
||||||
|
Loading…
Reference in New Issue
Block a user