Ответ 1
Первый - это объявление внутри пространства имен, а краткие операторы использования могут часто встречаться с использованием #includes. Второй - внутри определения функции, и вы никогда не сделаете этого, если не допустили ошибку. Вы не можете определить один и тот же символ дважды, например, но вы можете объявить несколько раз.
Оператор using также является не просто объявлением. Он немного сильнее, поскольку он импортирует функцию из одного пространства имен в другое. Например, он может вытащить функцию защищенного базового класса в производный класс, делая его общедоступным. Это почти определение связью.