Re[3]: Креш в синглтоне Мейерса
От: Аноним  
Дата: 27.11.07 10:23
Оценка:
Здравствуйте, Bell, Вы писали:

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


S>>На мой взгляд — ничего удивительного не происходит.

B>Кому как

S>>Статическая ф-я GetInstance() инлайнится в 2 модуля компиляции вместе со своей статической переменной. 2 разные переменные — разные и значения. Другое дело, насколько такое поведение комилятора соответсвует стандарту... Мне кажется, что вполне, но если кто-то докажет обратное — буду благодарен за ценную инфу. )))


B>

B>7.1.2/4
B>...
B>An inline function with external linkage shall have the same address in all translation units. A static
B>local variable in an extern inline function always refers to the same object.
A string literal in an
B>extern inline function is the same object in different translation units.

А можно заодно объяснить почему Foo::GetInstance() имеет external linkage? Потому что класс Foo имеет external linkage?
Изменится что-нибудь если GetInstance() будет свободной глобальной или в неймспейсе static inline функцией?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.