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);
|
~~~~~~~~^~~~~~~~~~~
```