Рассмотрим следующий пример:
-
tt.h объявляет глобальную константу с внешними связями
extern int g_TRAGIC;
-
tt.cpp определяет g_TRAGIC следующим образом
const int g_TRAGIC = 0xF001;
-
my.cpp хочет использовать его для определения своей собственной глобальной константы
const int g_MAGIC = g_TRAGIC;
Когда я прочитал iso-FAQ, я бы предположил, что это приводит к фиаско порядка статической инициализации. Однако примечания ISO-FAQ
Фиксирование порядка статической инициализации также может быть в некоторых случаях применимо к встроенным/внутренним типам.
Что означают эти некоторые случаи? В каких условиях мы сохраняем и воспроизводим SIOF для встроенных/внутренних типов, в частности констант? Или необходимо, чтобы Construct On First Use Idiom использовался для констант all с внешней связью?
Примечание: в реальном коде я не могу изменить определение g_TRAGIC.