ADLによるわずかに異なるセマンティクスの割引、一般的な使用方法using、およびその理由 状況に依存しますか(たとえば、#includedになるヘッダーとそうでないソースファイル)。
また、私は好むべきです::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)。