ADLによるわずかに異なるセマンティクスの割引、一般的な使用方法using
、およびその理由 状況に依存しますか(たとえば、#include
dになるヘッダーとそうでないソースファイル)。
また、私は好むべきです::std::
かstd::
?
名前空間レベル
using namespace
:using namespace std; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); }
完全に明示的であること:
std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { return std::make_pair(s.begin(), s.end()); }
名前空間レベルのusing宣言:
using std::pair; using std::string; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); }
関数ローカルusing宣言:
std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { using std::make_pair; return make_pair(s.begin(), s.end()); }
機能ローカル
using namespace
:std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { using namespace std; return make_pair(s.begin(), s.end()); }
他に何か?
これは、C ++ 14より前を想定しているため、を使用したreturn-type-deductionはありませんauto
。
::std::
vs について疑問に思ってstd::
います。
std
しかし、私は何もせずに使用しています。std名前空間を定義している人がトラブルを求めています(そして、おそらくほとんどの人が使用しているのstd
ではなく、使用していることを利用して検索しています::std
)。