Ответ 1
В соответствии с пунктом 7.3.4 [namespace.udir] пункт 4 директива пространства имен является транзитивной:
Для неквалифицированного поиска назначается второе пространство имен, которое содержит директивы-указатели, эффект выглядит так, как если бы в первом появлении также появились и директивы using из второго пространства имен.
... и в соответствии с пунктом 7.3.1.1 [namespace.unnamed] 1 есть вид неявной директивы использования для неназванного пространства имен:
Определение без имени-namespace ведет себя так, как если бы оно было заменено на
встроенное пространство имен уникальное {/* пустое тело */}
использование уникального пространства имен;
namespace unique {namespace-body}где встроенная строка появляется в том и только в том случае, если она отображается в определении без имени-namespace, все вхождения уникальной единицы перевода заменяются одним и тем же идентификатором, и этот идентификатор отличается от всех других идентификаторов во всей программе.
Таким образом, ответ "да, это должно быть скомпилировано" (и это происходит со всеми компиляторами на С++, с которыми я его пробовал).