>> Are they subject to or not subject to access specifiers? The question is not too clear, but maybe you are confusing compile-time with run-time?
No, I meant compile-time. It has become clear to me.
An example
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
class B
{
public:
void bset(int val) { bval_ = val; }
private:
void bset2(int val) { bval_ = val; }
private:
int bval_;
};
int main()
{
B b;
void (B::*f1)(int) = &B::bset;
(b.*f1)(7);
void (B::*f2)(int) = &B::bset2; // LINE 19
(b.*f2)(

;
return 0;
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Line 19 above will fail to compile, because bset2 is private and main() has no special priviledges to set f2 to point to bset2.
It amounts to the fact that pointers-to-member functions when being initialised or assigned are subject to the same rules governing public/private/public access.
And if the example above had pointers-to-member data, again public/private/public access rules also apply.
Thanks
Stephen Howe