Учитесь на чужих ошибках
От: 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)
Re: Учитесь на чужих ошибках
От: Bell Россия  
Дата: 21.10.05 12:00
Оценка: +2
Здравствуйте, stalcer, Вы писали:

Глюк, конечно, интересный, вот только я не понял — чему нужно учиться? Не использовать пространства имен? Или запретить себе использовать именно пространство имен с именем details? Или вообще обходить BCB 6 стороной?
Любите книгу — источник знаний (с) М.Горький
Re: Учитесь на чужих ошибках
От: Чипсет Россия http://merlinko.com
Дата: 21.10.05 12:09
Оценка: +1
Здравствуйте, stalcer, Вы писали:


S>Решил тут использовать неймспейс details, как в бусте. Пишу на BCB 6. Обнаружился неожиданный (впрочем от bcb можно всего ожидать) глюк:


S>А если неймспейс 'y' убрать, то все даже откомпилируется . Так вот.


Вывод: выкинуть BCB ффтопку.
... << А писал я этот бред на RSDN@Home 1.1.4 stable rev. 510, под звуки тишины>>
"Всё что не убивает нас, делает нас сильнее..."
Re[2]: Учитесь на чужих ошибках
От: Lorenzo_LAMAS  
Дата: 21.10.05 12:11
Оценка: +1 :)
B>Глюк, конечно, интересный, вот только я не понял — чему нужно учиться?

ИМХО это урок начинающим компиляторостроителям, мол не повторяйте такой лажи.
Of course, the code must be complete enough to compile and link.
Re[2]: Учитесь на чужих ошибках
От: stalcer Россия  
Дата: 21.10.05 12:15
Оценка:
Здравствуйте, Bell, Вы писали:

B>Здравствуйте, stalcer, Вы писали:


B>Глюк, конечно, интересный, вот только я не понял — чему нужно учиться? Не использовать пространства имен? Или запретить себе использовать именно пространство имен с именем details? Или вообще обходить BCB 6 стороной?


Может и последнему. Я details использую, просто не делаю нигде using namespace, ну кроме std и своей core (в которой специально по этому случаю нет details) .
http://www.lmdinnovative.com (LMD Design Pack)
Re[2]: Учитесь на чужих ошибках
От: stalcer Россия  
Дата: 21.10.05 12:17
Оценка:
Здравствуйте, Чипсет, Вы писали:

Ч>Вывод: выкинуть BCB ффтопку.


Эх, тяжелое наследие Delphi программирования.
http://www.lmdinnovative.com (LMD Design Pack)
Re: Учитесь на чужих ошибках
От: Cool Ace Россия  
Дата: 21.10.05 14:18
Оценка:
действительно фигня полная блин, отсюда вывод: не надо билдер юзать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.