std::string::npos なんかの参照とったらどうなるんだろう?

と思ってやってみたら普通に通る。ちゃんと定義が置いてあるみたい。

と思って libstdc++ のソース見たらクラス内で -1 で初期化したうえで、
クラス外に初期化子の無い定義が書いてあった。

めんどくさいけど、これが正解なんだろう。