Здравствуйте, 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 функцией?