std::tr1::shared_ptr は問題が起こらないだろうけど、
標準ライブラリだから不完全型を使うと非合法になるのだろうか。