Skip to content

Compilation error in color.h with gcc 8.3 #4331

Description

@brt-v

With v11.1.3, I get the following compiler error:

In file included from /software/fmttest/fmt/include/fmt/format.h:41,
                 from /software/fmttest/fmt/include/fmt/color.h:11,
                 from /software/fmttest/main.cpp:1:
/software/fmttest/fmt/include/fmt/base.h: In instantiation of 'struct fmt::v11::detail::is_output_iterator<fmt::v11::detail::buffer<char>, char, void>':
/software/fmttest/fmt/include/fmt/base.h:2804:11:   required by substitution of 'template<class OutputIt, typename std::enable_if<fmt::v11::detail::is_output_iterator<typename std::remove_cv<typename std::remove_reference<_Tp>::type>::type, char>::value, int>::type <anonymous> > fmt::v11::remove_cvref_t<T> fmt::v11::vformat_to(OutputIt&&, fmt::v11::string_view, fmt::v11::format_args) [with OutputIt = fmt::v11::detail::buffer<char>&; typename std::enable_if<fmt::v11::detail::is_output_iterator<typename std::remove_cv<typename std::remove_reference<_Tp>::type>::type, char>::value, int>::type <anonymous> = <missing>]'
/software/fmttest/fmt/include/fmt/color.h:463:13:   required from 'void fmt::v11::detail::vformat_to(fmt::v11::detail::buffer<T>&, const fmt::v11::text_style&, fmt::v11::basic_string_view<Char>, fmt::v11::basic_format_args<typename std::conditional<std::is_same<Char, char>::value, fmt::v11::context, fmt::v11::generic_context<fmt::v11::basic_appender<Char>, Char> >::type>) [with Char = char; typename std::conditional<std::is_same<Char, char>::value, fmt::v11::context, fmt::v11::generic_context<fmt::v11::basic_appender<Char>, Char> >::type = fmt::v11::context]'
/software/fmttest/fmt/include/fmt/color.h:471:40:   required from here
/software/fmttest/fmt/include/fmt/base.h:2266:50: error: no 'operator++(int)' declared for postfix '++' [-fpermissive]
     void_t<decltype(*std::declval<decay_t<It>&>()++ = std::declval<T>())>>
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/software/fmttest/fmt/include/fmt/base.h:2266:50: error: no 'operator++(int)' declared for postfix '++' [-fpermissive]
make[2]: *** [CMakeFiles/fmttest.dir/build.make:76: CMakeFiles/fmttest.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:100: CMakeFiles/fmttest.dir/all] Error 2

Minimal example to reproduce:

#include "fmt/color.h"

int main() {
    return 0;
}

I tried setting different language versions (C++11 up to C++20), but that didn't make a difference.

I am aware that gcc 8.3 is outdated, this is for an embedded project and updating the compiler quite a pain. So I'm hoping there's an easy fix, but I would totally understand it's no longer supported.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions