Решил тут использовать неймспейс 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' убрать, то все даже откомпилируется
. Так вот.
Здравствуйте, stalcer, Вы писали:
Глюк, конечно, интересный, вот только я не понял — чему нужно учиться?
Не использовать пространства имен? Или запретить себе использовать именно пространство имен с именем details? Или вообще обходить BCB 6 стороной?
Здравствуйте, stalcer, Вы писали:
S>Решил тут использовать неймспейс details, как в бусте. Пишу на BCB 6. Обнаружился неожиданный (впрочем от bcb можно всего ожидать) глюк:
S>А если неймспейс 'y' убрать, то все даже откомпилируется . Так вот.
Вывод: выкинуть BCB ффтопку.
... << А писал я этот бред на RSDN@Home 1.1.4 stable rev. 510, под звуки тишины>>
B>Глюк, конечно, интересный, вот только я не понял — чему нужно учиться?
ИМХО это урок начинающим компиляторостроителям, мол не повторяйте такой лажи.
Здравствуйте, Bell, Вы писали:
B>Здравствуйте, stalcer, Вы писали:
B>Глюк, конечно, интересный, вот только я не понял — чему нужно учиться? Не использовать пространства имен? Или запретить себе использовать именно пространство имен с именем details? Или вообще обходить BCB 6 стороной?
Может и последнему. Я details использую, просто не делаю нигде using namespace, ну кроме std и своей core (в которой специально по этому случаю нет details)
.
Здравствуйте, Чипсет, Вы писали:
Ч>Вывод: выкинуть BCB ффтопку.
Эх, тяжелое наследие Delphi программирования.