https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116838
Bug ID: 116838 Summary: Problem with warming c23, c++23 Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: lukaszcz18 at wp dot pl Target Milestone: --- Test http://www.equation.com/ftpdir/gcc/gcc-15-20240825-64.exe Unfortunately ffmpeg 7.1.0 development requires using c23/c++23 for the latest add-ons. Warning that does not appear in earlier versions of gcc. Where to find #include <stdbit.h> in c23? Where to find SetThreadDescription? Codec vvenc ``` In file included from MCTF.cpp:52: ../Utilities/NoMallocThreadPool.h: In lambda function: ../Utilities/NoMallocThreadPool.h:160:31: warning: implicit capture of 'this' via '[=]' is deprecated in C++20 [-Wdeprecated] 160 | nonconst->m_cond.wait( l, [=] { return !m_intBarrier.isBlocked(); } ); | ^ ../Utilities/NoMallocThreadPool.h:160:31: note: add explicit 'this' or '*this' capture ``` codec fdk-aac ``` ps_encode.cpp: In function 'FDK_PSENC_ERROR FDKsbrEnc_PSEncode(HANDLE_PS_ENCODE, HANDLE_PS_OUT, UCHAR*, UINT, FIXP_DBL* (*)[2][2], INT, INT)': ps_encode.cpp:1002:34: warning: arithmetic between different enumeration types 'PS_CONSTS' and 'PS_BANDS' is deprecated [-Wdeprecated-enum-enum-conversion] 1002 | PS_MAX_ENVELOPES * PS_MAX_BANDS * sizeof(PS_DELTA)); ``` codec davs2 ``` decoder.cc: In function 'void decoder_signal(davs2_t*, davs2_frame_t*, int)': decoder.cc:268:12: warning: '++' expression of 'volatile'-qualified type is deprecated [-Wvolatile] 268 | frame->i_decoded_line++; | ~~~~~~~^~~~~~~~~~~~~~ ``` codec x265 ``` sao.cpp: In member function 'void x265::SAO::rdoSaoUnitCu(x265::SAOParam*, int, int, int)': sao.cpp:1242:66: warning: arithmetic between different enumeration types 'x265::SAO::<unnamed enum>' and 'x265::SAOType' is deprecated [-Wdeprecated-enum-enum-conversion] 1242 | X265_CHECK(sizeof(PerPlane) == (sizeof(int32_t) * (NUM_PLANE * MAX_NUM_SAO_TYPE * MAX_NUM_SAO_CLASS)), "Found Padding space in struct PerPlane"); | ~~~~~~~~~~^~~~~~~~~~~~~~~~~~ common.h:113:37: note: in definition of macro 'X265_CHECK' 113 | #define X265_CHECK(expr, ...) if (!(expr)) { \ | ^~~~ ``` ``` frameencoder.cpp:1748:16: warning: '++' expression of 'volatile'-qualified type is deprecated [-Wvolatile] 1748 | curRow.completed++; | ~~~~~~~^~~~~~~~~ ``` vapoursynth ``` avisynth_compat.cpp:1309:56: error: no match for 'operator+' (operand types are 'const char [16]' and 'std::u8string' {aka 'std::__cxx11::basic_string<char8_t>'}) 1309 | vsapi->mapSetError(out, ("Failed to load " + fsPath.u8string() + ". GetLastError() returned " + std::to_string(lastError) + ". The file you tried to load or one of its dependencies is probably missing.").c_str()); | ~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~ | | | | const char [16] std::u8string {aka std::__cxx11::basic_string<char8_t>} ``` fmt c++23 ``` In file included from fmt.cc:126: std.h:116:33: error: declaration of partial specialization in unbraced export-declaration 116 | template <typename Char> struct formatter<std::filesystem::path, Char> { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:116:33: note: a specialization is always exported alongside its primary template std.h:186:8: error: declaration of partial specialization in unbraced export-declaration 186 | struct formatter<std::bitset<N>, Char> : nested_formatter<string_view> { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:186:8: note: a specialization is always exported alongside its primary template std.h:212:8: error: declaration of partial specialization in unbraced export-declaration 212 | struct formatter<std::thread::id, Char> : basic_ostream_formatter<Char> {}; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:212:8: note: a specialization is always exported alongside its primary template std.h:219:8: error: declaration of partial specialization in unbraced export-declaration 219 | struct formatter<std::optional<T>, Char, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 220 | std::enable_if_t<is_formattable<T, Char>::value>> { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:219:8: note: a specialization is always exported alongside its primary template std.h:282:8: error: declaration of partial specialization in unbraced export-declaration 282 | struct formatter<std::expected<T, E>, Char, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 283 | std::enable_if_t<(std::is_void<T>::value || | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 284 | is_formattable<T, Char>::value) && | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 285 | is_formattable<E, Char>::value>> { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:282:8: note: a specialization is always exported alongside its primary template std.h:313:1: error: explicit specializations are not permitted here 313 | template <> struct formatter<std::source_location> { | ^~~~~~~~~~~ std.h:313:1: note: a specialization is always exported alongside its primary template std.h:369:33: error: declaration of partial specialization in unbraced export-declaration 369 | template <typename Char> struct formatter<std::monostate, Char> { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:369:33: note: a specialization is always exported alongside its primary template std.h:383:8: error: declaration of partial specialization in unbraced export-declaration 383 | struct formatter< | ^~~~~~~~~~ 384 | Variant, Char, | ~~~~~~~~~~~~~~ 385 | std::enable_if_t<std::conjunction_v< | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 386 | is_variant_like<Variant>, is_variant_formattable<Variant, Char>>>> { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:383:8: note: a specialization is always exported alongside its primary template std.h:416:1: error: explicit specializations are not permitted here 416 | template <> struct formatter<std::error_code> { | ^~~~~~~~~~~ std.h:416:1: note: a specialization is always exported alongside its primary template std.h:523:8: error: declaration of partial specialization in unbraced export-declaration 523 | struct formatter<std::type_info, Char // DEPRECATED! Mixing code unit types. | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 524 | > { | ~ std.h:523:8: note: a specialization is always exported alongside its primary template std.h:540:8: error: declaration of partial specialization in unbraced export-declaration 540 | struct formatter< | ^~~~~~~~~~ 541 | T, Char, // DEPRECATED! Mixing code unit types. | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 542 | typename std::enable_if<std::is_base_of<std::exception, T>::value>::type> { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:540:8: note: a specialization is always exported alongside its primary template std.h:606:8: error: declaration of partial specialization in unbraced export-declaration 606 | struct formatter<BitRef, Char, | ^~~~~~~~~~~~~~~~~~~~~~~ 607 | enable_if_t<detail::is_bit_reference_like<BitRef>::value>> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:606:8: note: a specialization is always exported alongside its primary template std.h:626:8: error: declaration of partial specialization in unbraced export-declaration 626 | struct formatter<std::atomic<T>, Char, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 627 | enable_if_t<is_formattable<T, Char>::value>> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:626:8: note: a specialization is always exported alongside its primary template std.h:639:8: error: declaration of partial specialization in unbraced export-declaration 639 | struct formatter<std::atomic_flag, Char> : formatter<bool, Char> { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:639:8: note: a specialization is always exported alongside its primary template std.h:649:45: error: declaration of partial specialization in unbraced export-declaration 649 | template <typename T, typename Char> struct formatter<std::complex<T>, Char> { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ std.h:649:45: note: a specialization is always exported alongside its primary template std.h:715:8: error: declaration of partial specialization in unbraced export-declaration 715 | struct formatter<std::reference_wrapper<T>, Char, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 716 | enable_if_t<is_formattable<remove_cvref_t<T>, Char>::value>> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` python 3.13 ``` posixmodule.c: In function 'os__path_splitroot_impl': posixmodule.c:5136:55: error: passing argument 2 of 'PathCchSkipRoot' from incompatible pointer type [-Wincompatible-pointer-types] 5136 | ret = PathCchSkipRoot(buffer, /*(const WCHAR **)*/&end); | ^~~~ | | | wchar_t ** {aka short unsigned int **} In file included from posixmodule.c:35: C:/gcc1500/x86_64-w64-mingw32/include/pathcch.h:41:75: note: expected 'const WCHAR **' {aka 'const short unsigned int *'} but argument is of type 'wchar_t **' {aka 'short unsigned int **'} 41 | WINPATHCCHAPI HRESULT APIENTRY PathCchSkipRoot (PCWSTR pszPath, PCWSTR *ppszRootEnd); | ~~~~~~~~^~~~~~~~~~~ ```