AS>// реализация AS>namespace fw AS>{ AS> namespace win AS> { AS> namespace io AS> { AS> struct io_impl AS> { AS> }; AS> } AS> } AS>}
AS>// то, что видит пользователь
AS>namespace fw AS>{ AS> namespace io AS> { AS> // using namespace fw::win::io AS> struct io_front: io_impl // ошибка компиляции AS> { AS> }; AS> } AS>} AS>[/ccode]
Если я правильно понял (в чем я не до конца уверен), то есть два файла. В одном прописаны три пространства имен — fw, внутри которого win, и внутри которого io. Есть второй файл, в котором внутри fw прописан io. В таком случае ничего удивительного, что io_front из fw:win:io не виден в fw:io — это же совершенно другой неймспейс. Было бы как раз очень неправильно, если бы он был виден!
AS>1. Понять причину ошибки компиляции, в смысле, где в стандарте посмотреть (3.4.6 и 7.3 просмотрел, вроде ничего похожего).
Надеюсь, на этот вопрос я ответил.
AS>1 Добиться эффекта, чтобы fw::io мержилось с fw::io(from win) без дополнительного using.
Невозможно, если я все правильно понял.
AS>2. Возможно, есть способ как то порефакторить это, дабы избежать подобных или других проблем.
А почему не классическое решение?
class io {...};
clas win_io : io {...};
class nix_io : io {...};