struct CImpl* pimpl_;
これは宣言じゃないんだから、
b-1が不可能なのは当然でない?