STD :: Thread -Syntaxdifferenz in G ++ 13 (Linux) gegen G ++ 14 (Windows)
Posted: 23 Apr 2025, 08:21
Ich habe ein interessantes Verhalten von G ++ in den Versionen 13 und 14 erlebt. Der folgende Code funktioniert gut in G ++ 14 (MSYS2, Mingw, Windows): < /p>
Code: Select all
#include
#include
class A
{
public:
void f()
{
std::cout
error: invalid use of non-static member function 'void A::f()'
< /code>
Nur < /p>
ändernstd::thread t(A::f,&a);
< /code>
zu < /p>
std::thread t(&A::f,&a);
< /code>
Löst das Problem. Anscheinend konnte unter der Non-MSYS2-Variante eine Mitgliedsfunktion anstelle eines Funktionsarguments nicht verwendet werden, aber ein Zeiger auf eine Mitgliedsfunktion konnte? Anscheinend funktionieren andere G ++ 14 -Versionen nicht. < /P>
$ g++ --version
g++.exe (Rev2, Built by MSYS2 project) 14.2.0