Compile Fail with updated libfmt v9.0.0
System: Gentoo x86_64 5.15.41 mkvtoolnix Version: 67.0.0 g++ version: 11.3.0
Compile succeeded with previous libfmt v8.1.1 and this version of mkvtoolnix.
Update of libfmt to v9.0.0 resulted in a compile failure.
Error message indicates problem during compile of src/common/bluray/track_chapter_names.cpp
.
Error message produced:
g++ -Wall -Wno-comment -Wfatal-errors -D_FILE_OFFSET_BITS=64 -DQT_NO_KEYWORDS -DMTX_LOCALE_DIR=\"/usr/share/locale\" -DMTX_PKG_DATA_DIR=\"/usr/share/mkvtoolnix\" -DMTX_DOC_DIR=\"/usr/share/doc/mkvtoolnix-67.0.0\" -fstack-protector-strong -I/usr/include/dvdcss -I/usr/include/utf8cpp -fPIC -std=c++17 -Wnon-virtual-dtor -Wextra -Wno-missing-field-initializers -Wunused -Wpedantic -Wno-maybe-uninitialized -Wlogical-op -Wno-extra-semi -Wmisleading-indentation -Wduplicated-cond -Wshadow-compatible-local -Wduplicated-branches -Wno-deprecated-copy -I/usr/include/qt5/QtCore -I/usr/include/qt5 -I/usr/include/qt5/QtGui -DQT_WIDGETS_LIB -I/usr/include/qt5/QtWidgets -DQT_MULTIMEDIA_LIB -I/usr/include/qt5/QtMultimedia -I/usr/include/qt5/QtNetwork -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CONCURRENT_LIB -I/usr/include/qt5/QtConcurrent -DQT_DBUS_LIB -I/usr/include/qt5/QtDBus -DQT_CORE_LIB -I/usr/include -march=bdver1 -O2 -pipe -I. -Ilib -Ilib/avilib-0.6.10 -Isrc -c -MMD -MF /var/tmp/portage/media-video/mkvtoolnix-67.0.0/work/mkvtoolnix-67.0.0/rake.d/dependency.d/tmp/src_common_bluray_track_chapter_names_o.d -o src/common/bluray/track_chapter_names.o -x c++ src/common/bluray/track_chapter_names.cpp
In file included from /usr/include/fmt/format.h:48,
from src/common/common.h:43,
from src/common/common_pch.h:1,
from src/common/bluray/track_chapter_names.cpp:14:
/usr/include/fmt/core.h: In instantiation of ‘constexpr fmt::v9::detail::value<Context> fmt::v9::detail::make_value(T&&) [with Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; T = const std::filesystem::__cxx11::path&]’:
/usr/include/fmt/core.h:1753:29: required from ‘constexpr fmt::v9::detail::value<Context> fmt::v9::detail::make_arg(T&&) [with bool IS_PACKED = true; Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; fmt::v9::detail::type <anonymous> = fmt::v9::detail::type::custom_type; T = const std::filesystem::__cxx11::path&; typename std::enable_if<IS_PACKED, int>::type <anonymous> = 0]’
/usr/include/fmt/core.h:1877:77: required from ‘constexpr fmt::v9::format_arg_store<Context, Args>::format_arg_store(T&& ...) [with T = {const std::filesystem::__cxx11::path&}; Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; Args = {std::filesystem::__cxx11::path}]’
/usr/include/fmt/core.h:1894:38: required from ‘constexpr fmt::v9::format_arg_store<Context, typename std::remove_cv<typename std::remove_reference<Args>::type>::type ...> fmt::v9::make_format_args(Args&& ...) [with Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; Args = {const std::filesystem::__cxx11::path&}]’
/usr/include/fmt/core.h:3163:44: required from ‘std::string fmt::v9::format(fmt::v9::format_string<T ...>, T&& ...) [with T = {const std::filesystem::__cxx11::path&}; std::string = std::__cxx11::basic_string<char>; fmt::v9::format_string<T ...> = fmt::v9::basic_format_string<char, const std::filesystem::__cxx11::path&>]’
src/common/bluray/track_chapter_names.cpp:35:7: required from here
/usr/include/fmt/core.h:1733:7: error: static assertion failed: Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt
1733 | formattable,
| ^~~~~~~~~~~
compilation terminated due to -Wfatal-errors.
Downgrading libfmt v8.1.1 was necessary.