Кроме того, это не значит, что ваш ответ неверен, это (+1). Это просто слишком осторожно, на мой взгляд.

отрим этот заголовок библиотеки:

#include<vector>
#include<algorithm>
#include<iostream>

namespace Lib {
  namespace detail {
    using namespace std;

    template<class T>
    void sort_impl(istream &in,ostream &out) {
      vector<T> v;
      {
        int n;
        in >> n;
        v.resize(n);
      }
      for(auto &i : v) cin >> i;

      sort(v.begin(),v.end());
      for(auto i : v) out << i << endl;
    }
  }

  inline void sort_std() {
    detail::sort_impl<int>(std::cin,std::cout);
  }
}

Лиdetail пространство имен успешно изолирует клиентов библиотеки (и остальной части реализации библиотеки) отс помощью директивы в этом примере? Я не заинтересован в обсуждении вПочему «использование пространства имен std» считается плохой практикой?хотя некоторые из аргументов применимы даже к «хорошо сдержанным»используя-директивы.

Обратите внимание, что есть два существующих вопроса, касающихся той же ситуации, но сс помощью деклараций:

Использование директивы в заголовочных файлах в приватном пространстве имен (несмотря на название)Элегантный способ предотвратить отравление пространства имен в C ++ (чей единственный ответ действительно является ответом на вопрос "плохой практики" выше)

Это можно сочетать с любым из них, но редактирование будет серьезным.

Ответы на вопрос(2)

Ваш ответ на вопрос