質問です。
smart_ptrを利用しているのですが、例えばクラスのメンバー変数として

class CNantoka
{
smart_ptr<CHoge> hoge;
};
とやる場合、そのクラスの前にCHoge.hをincludeする必要があるようです。
ですがこれだと、CHoge.hが書き換えられる度に、CNantoka.hを読んでいる全てのcppがリコンパイルされてしまいます。

単純なポインタならば
class CHoge;
class CNantoka
{
 CHoge* hoge;
};
とやればいいのですが、smart_ptrで同様の手軽さを実現することはできないのでしょうか?

(目的から考えると)CNantokaを使いたい連中に、CHogeの実装を知らせる必要はありません。
メンバーには(後述する構造体への)ポインタだけもたせて、メンバー変数代わりの構造体の定義をCNantoka.cppで行なうという手は一応考えました。