Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Подозреваю, что сначала вызывается registerWorld, а затем — конструктор
ПК>boost::function для объекта Module::worldFactory_, что приводит к обнулению
ПК>указателя, в нем содержащегося.
Блин. Точно. Я знал что function где-то обнуляется, но никак не мог понять где.
M>> VC7.0 всё компилит и выполняет нормально. Я даже не знаю кто тут прав, вроде
M>> код верный, и VC прав, хотя кто его знает.
ПК>Оба правы: стандарт не гарантирует порядок инициализации глобальных объектов в
ПК>разных единицах трансляции.
Кстати есть ещё такое момент. Можно ли писать так?
1.cpp
namespace {
bool reg = ....;
}
2.cpp
namespace {
bool reg = ....;
}
VC7.0 при линковке ругается на то, что reg уже определён в другом модуле. Разве он прав
... << RSDN@Home 1.1.3 beta 1 >>