https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105234
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Martin Liška from comment #4) > Reduced test-case: Slightly less reduced, avoiding the warnings about invalid/deprecated features: namespace std { typedef char string; class runtime_error { public: runtime_error(string); }; } // namespace std #pragma GCC push_options namespace fmt { namespace { __attribute__((always_inline)) inline auto format() -> std::string { return {}; } #pragma GCC pop_options } // namespace } // namespace fmt namespace core { class ErrorBase : std::runtime_error { using runtime_error::runtime_error; }; class Error : ErrorBase { public: template <typename... T> Error(T &&...); }; template <typename... T> Error::Error(T &&...) : ErrorBase(fmt::format()) {} } // namespace core void commit() { core::Error(); }