Bonjour,
J'ai cette erreur en incluant Ogre.h.
J'utilise gcc 12.3.0 et je compile mon code avec la norme c++17.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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'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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager