I'm not a C++ expert but I believe it is not possible in current C++ to implement a pointer type that will cause a compiler error when it is sent to another thread.
Interesting thought experiment. While I haven’t tried it, one half-baked idea that comes to mind is disable both copy and move for the pointer and instantiate the type in C++ thread-local storage. Not that I ever would.
Comments
I'm not a C++ expert but I believe it is not possible in current C++ to implement a pointer type that will cause a compiler error when it is sent to another thread.
Interesting thought experiment. While I haven’t tried it, one half-baked idea that comes to mind is disable both copy and move for the pointer and instantiate the type in C++ thread-local storage. Not that I ever would.
It is interesting! I experimented with creating a bad borrow checker for Java using annotations from
https://checkerframework.org/
It supports some level of substructural types using must-call annotations,
https://checkerframework.org/manual/#resource-leak-checker
That's almost certainly true, but first you have to define "send to another thread"
std::jthread?