
Jeff Garland wrote:
Anthony Williams wrote:
Iulian M <eti@erata.net> writes:
IIRC if get_instance() will be inlined and 2 translation units will have their own copy of get_instance() then there will be two st instances in the finall app... witch in case of a singleton is BAD.
ps: i only had 2 zips of coffee so i might be missing something ...
Have another cup of coffee then, because you are missing something.
The compiler is required to ensure that there is only one copy of statics declared in inline functions, even if that function is defined in more than one translation unit, because otherwise you get precisely the problem you describe.
It can, in fact, trivially happen. Try linking in a couple static libs on windows that call this function...you'll get 2.
You will on MSVC 6.0 because of a compiler bug. Inlining doesn't change semantics.