<thread> erreur: ne peut convertir «*int*» en «*void (*)()*»
Bonjour,
J'ai cette erreur en incluant Ogre.h.
Code:
1 2 3 4 5 6 7 8 9 10
|
Dans le fichier inclus depuis /usr/include/c++/12/thread:43,
depuis [..]/Ma/code/modules/ma/ogre/include/Ogre/Ogre.h:14,
depuis [..]/Ma/code/modules/ma/ogre/src/View.cpp:14:
/usr/include/c++/12/bits/std_thread.h: Dans le constructeur «*std::thread::thread(_Callable&&, _Args&& ...)*»:
/usr/include/c++/12/bits/std_thread.h:165:13: erreur: ne peut convertir «*int*» en «*void (*)()*»
165 | __depend);
| ^~~~~~~~
| |
| int |
J'utilise gcc 12.3.0 et je compile mon code avec la norme c++17.
J'ai dû mal à savoir par quel bout prendre cette erreur.
J'ai l'impression que cette erreur est apparue quand le système est passé à gcc 12 mais je n'en suis pas sûr et même si c'est vrais, je ne vois pas pourquoi l'inclusion de <thread> pourrait causer cette erreur.
J'ai l'impression qu'une option de compilation ou quelque chose d'autre en amont a été déclaré et fait capoter l'inclusion de <thread>. Si c'est le cas, ça va être dur de trouver l'origine.
À noter que la compilation de la librairie d'Ogre ne pose aucun soucis.
Auriez-vous une idée par quel bout je dois commencer.
Merci ;)
Voici le morceau de code qui génère cette erreur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#ifdef _GLIBCXX_HAS_GTHREADS
template<typename _Callable, typename... _Args,
typename = _Require<__not_same<_Callable>>>
explicit
thread(_Callable&& __f, _Args&&... __args)
{
static_assert( __is_invocable<typename decay<_Callable>::type,
typename decay<_Args>::type...>::value,
"std::thread arguments must be invocable after conversion to rvalues"
);
#ifdef GTHR_ACTIVE_PROXY
// Create a reference to pthread_create, not just the gthr weak symbol.
auto __depend = reinterpret_cast<void(*)()>(&pthread_create);
#else
auto __depend = nullptr;
#endif
using _Wrapper = _Call_wrapper<_Callable, _Args...>;
// Create a call wrapper with DECAY_COPY(__f) as its target object
// and DECAY_COPY(__args)... as its bound argument entities.
_M_start_thread(_State_ptr(new _State_impl<_Wrapper>(
std::forward<_Callable>(__f), std::forward<_Args>(__args)...)),
__depend); /// <L'erreur vient d'ici.
}
#endif // _GLIBCXX_HAS_GTHREADS |