std::tr1::shared_ptr
をstd::shared_ptr
として使用することは合法で良好なプログラミングスタイルですかusing
ディレクティブを対応するヘッダーに配置しますか?このように:ヘッダーの名前空間stdにtr1 :: shared_ptrを使用して配置することはできますか?
namespace std
{
using tr1::shared_ptr;
}
名前空間全体を汚染するのは悪いことがわかりますが、このケースはどうですか?隠された落書きはありますか?ターゲットコンパイラはVS2008ですが、それ以降のバージョンとの互換性も求められます。
[それ以降のバージョンも 'std :: tr1'をサポートしているはずです(http://stackoverflow.com/a/2002972/241631)。コンパイラは名前空間全体を削除しません。あなたがしようとしているのと同じように、それらを 'std'にコピーします。したがって、 'std :: tr1 :: shared_ptr'という型を参照することは、長い間問題になってはいけません。 – Praetorian
@カッシーニPraetorianが言ったこと^あなたがあなたのルートに行きたいなら、プリプロセッサでコンパイラのチェックをして、C++ 11をサポートしているコンパイラと将来のコンパイラが混乱しないようにする必要があります。フレキシブルではなく、移植可能ではありません。 – leetNightshade
@leetNightshade実際には、上記のすべてです。確かに残念ながら、「コンパイラは機能Xをサポートしています」というチェックはありませんが、大部分の目的で、C++バージョンの単純なプリプロセッサチェックで十分です。 –