Commit 1b452538 authored by Victor Zverovich's avatar Victor Zverovich

Fix more compilation errors on gcc 4.6

parent 6090e51b
...@@ -2658,7 +2658,8 @@ void basic_writer<Range>::write_double(T value, const format_specs &spec) { ...@@ -2658,7 +2658,8 @@ void basic_writer<Range>::write_double(T value, const format_specs &spec) {
} }
auto write_inf_or_nan = [this, &spec, sign](const char *str) { auto write_inf_or_nan = [this, &spec, sign](const char *str) {
write_padded(INF_SIZE + (sign ? 1 : 0), spec, inf_or_nan_writer{sign, str}); this->write_padded(INF_SIZE + (sign ? 1 : 0), spec,
inf_or_nan_writer{sign, str});
}; };
// Format NaN and ininity ourselves because sprintf's output is not consistent // Format NaN and ininity ourselves because sprintf's output is not consistent
......
...@@ -67,8 +67,10 @@ class convert_to_int<T, Char, true> { ...@@ -67,8 +67,10 @@ class convert_to_int<T, Char, true> {
template <typename> template <typename>
static std::false_type test(...); static std::false_type test(...);
typedef decltype(test<T>(0)) result;
public: public:
static const bool value = !decltype(test<T>(0))::value; static const bool value = !result::value;
}; };
// Write the content of buf to os. // Write the content of buf to os.
......
...@@ -290,7 +290,7 @@ class printf_arg_formatter : public internal::arg_formatter_base<Range> { ...@@ -290,7 +290,7 @@ class printf_arg_formatter : public internal::arg_formatter_base<Range> {
template <typename T> template <typename T>
struct printf_formatter { struct printf_formatter {
template <typename ParseContext> template <typename ParseContext>
auto parse(ParseContext &ctx) { return ctx.begin(); } auto parse(ParseContext &ctx) -> decltype(ctx.begin()) { return ctx.begin(); }
template <typename FormatContext> template <typename FormatContext>
auto format(const T &value, FormatContext &ctx) -> decltype(ctx.begin()) { auto format(const T &value, FormatContext &ctx) -> decltype(ctx.begin()) {
......
...@@ -137,6 +137,8 @@ TEST(StringViewTest, Ctor) { ...@@ -137,6 +137,8 @@ TEST(StringViewTest, Ctor) {
EXPECT_EQ(4u, string_view(std::string("defg")).size()); EXPECT_EQ(4u, string_view(std::string("defg")).size());
} }
// GCC 4.6 doesn't have std::is_copy_*.
#if FMT_GCC_VERSION && FMT_GCC_VERSION >= 407
TEST(WriterTest, NotCopyConstructible) { TEST(WriterTest, NotCopyConstructible) {
EXPECT_FALSE(std::is_copy_constructible<fmt::writer>::value); EXPECT_FALSE(std::is_copy_constructible<fmt::writer>::value);
} }
...@@ -144,6 +146,7 @@ TEST(WriterTest, NotCopyConstructible) { ...@@ -144,6 +146,7 @@ TEST(WriterTest, NotCopyConstructible) {
TEST(WriterTest, NotCopyAssignable) { TEST(WriterTest, NotCopyAssignable) {
EXPECT_FALSE(std::is_copy_assignable<fmt::writer>::value); EXPECT_FALSE(std::is_copy_assignable<fmt::writer>::value);
} }
#endif
TEST(WriterTest, Data) { TEST(WriterTest, Data) {
memory_buffer buf; memory_buffer buf;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment