Учитесь на чужих ошибках
От: stalcer Россия  
Дата: 21.10.05 11:44
Оценка: 23 (1) :))) :)
Решил тут использовать неймспейс details, как в бусте. Пишу на BCB 6. Обнаружился неожиданный (впрочем от bcb можно всего ожидать) глюк:

namespace x
{
    namespace details
    {
        class A { void p(); };
    }

    class B { void p(); };
}

namespace y
{
namespace z
{
    //namespace details {}  // Откомментируй, и глюк исчезнет.

    using namespace x;

    namespace details // Ситает что это 'x::details' :)
    {
        void A::p() {}
    } // Раз уж мы были в 'x::details', то из него и выходим.
      // И где же мы оказываемся?

    void B::p() {} // Правильно, в неймспейсе 'x' :)))

} // Аналогино выходим из неймспейса 'x' и
  // оказываемся в глобальном неймспейсе.
    
} // И, внимние, тишина в студии, выход из 
  // глобального неймспейса при помощи 
  // internal compiler error!!!


А если неймспейс 'y' убрать, то все даже откомпилируется . Так вот.
http://www.lmdinnovative.com (LMD Design Pack)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.