すると、つまりは
std::size_tがunsigned longでありunsigned long longでないことから
ビット表現の都合上std::string::nposをlong longにキャストしても-1にはならなかったということか。

もしもstd::size_tが(というかnposが)unsigned long longで定義されていたらlong longにキャストすると-1に等しくなったであろうと考えて正しい?