Consider the following snippet:
#include
Anything threadprivate will be replicated for each thread. I have done this by making a static object (class does not need to be static, just the instantiated object must be static). Maybe this is what you want?
Now consider if you want some members of the class to be shared between threads. Making only some members of the class static implies that if each thread instantiated that object, then we should replicate only the static part (because it's threadprivate) but not the entire object (shared memory is not replicated). This would require one object to have everything and all the other objects to be of smaller size (not re-storing shared memory) but still have a reference to the shared memory, which quite frankly doesn't make sense.
As a suggestion, make yourself two classes, one with strictly (thread)private data and one for shared data.