https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120990

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This is expected. std::function<int()> is basically wrapping the function
around like:

```
size_t bar();

int f()
{
  return bar();
}
```

GCC does provide a warning with -Wconversion (though in the case of
std::function only with -Wsystem-headers which turns on a lot of conversion
warnings outside  of std::function):

/opt/compiler-explorer/arm64/gcc-trunk-20250707/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/include/c++/16.0.0/bits/invoke.h:116:42:
warning: conversion from 'long unsigned int' to 'std::enable_if_t<true, int>'
{aka 'int'} may change value [-Wconversion]
  116 |         return std::__invoke_impl<__type>(__tag{},
      |                ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
  117 |                                          
std::forward<_Callable>(__fn),
      |                                          
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  118 |                                          
std::forward<_Args>(__args)...);
      |                                          
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Reply via email to