This must be new code otherwise you wouldn't only now be discovering that threads::joinable isn't available.
So, why not install a new version in parallel and run your new code on that?
Your sample code does nothing useful, so I cannot safely advise how to re-write it so that you do not need joinable; but if your threads are not returning anything, why join them at all?
You could just detach them and let them go away naturally; but then you need to have a mechanism for deciding when your main thread can end.
Alternatively; why test for joinable? Most of the time you want to wait for them all to end; so a simple:
Is all that is required.
But again, given silly sample code, it is impossible to advise which strategy makes sense in your case.
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.