Я вижу, что этот вопрос довольно старый, но для тех, кто проверяет его в будущем, я хотел добавить эту ссылку из документации LLVM в качестве дополнения к обсуждению и для людей, ищущих дополнительную информацию:
Стандарты кодирования LLVM: Не использовать с использованием пространства имен std;
Я считаю, что заголовок довольно показателен, почему я поделился им, чтобы помочь с этим вопросом.
В LLVM мы предпочитаем явно указывать префикс «std ::» перед всеми идентификаторами из стандартного пространства имен, а не полагаться на «использование пространства имен std;».
В заголовочных файлах добавлениедиректива using namespace XXX загрязняет пространство имен любого исходного файла, который включает в себя заголовок.Это явно плохо.
Редактировать: Так что вместо этого, если использовать 'использование пространства имен std;'явно введите std :: для каждого случая, когда вы используете стандартную библиотеку.Это позволяет избежать конфликтов с пространствами имен исходного файла.Вот что советует цитата из статьи выше.