Spójrz na konstruktor klasy thread w dokumentacji https://en.cppreference.com/w/cpp/thread/thread/thread.
Masz 3 konstruktory: domyślny, przenoszący, przyjmujący funkcję wraz z parametrami oraz usunięty konstruktor kopiujący (obiektu nie można kopiować).
Przekazując do konstruktora wywołanie listeningFunc(clientAddress) próbowałeś przekazać do konstruktora wynik funkcji czyli void.
Spójrzmy teraz na konstruktor który najbardziej cię interesuje
template< class Function, class... Args >
explicit thread( Function&& f, Args&&... args );
Konstruktor przyjmuje funkcję (może to być wskaźnik do funkcji, lambda lub funktor (obiekt, który może być wywołany jak funkcja), oraz listę argumentów dla tej funkcji.
Jeżeli twoja funkcja listeningFunc wymaga podania argumentu typu sf::IpAddress to powinieneś go przekazać do konstruktora.
listeningThread[i] = std::thread(listeningFunc, clientAddress);