Знижка на дуже різну семантику завдяки 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 std::pair; using std::string; 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) { 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, а отже, не використовується вирахування типу повернення auto
.
::std::
VS. std::
ж.
std
без другого, хоча. Хтось, що визначає простір імен std, задає проблеми (і, ймовірно, шукає, щоб скористатися тим, що більшість людей використовує, std
а не ::std
).