I am confused by the result i am getting from this code. In one dll the counter is incremented when the static variable is initialized. Then when main is executed i read this counter but i get 0 instead of 1. Can anybody explain this to me?
In my dynamic library project:
// Header file class Foo { int i_ = 0; Foo(const Foo&) = delete; Foo& operator= (Foo) = delete; Foo() { } public: void inc() { ++i_; } int geti() { return i_; } static Foo& get() { static Foo instance_; return instance_; } Foo( Foo&&) = default; Foo& operator= (Foo&&) = default; }; int initialize() { Foo::get().inc(); return 10; } class Bar { static int b_; }; // cpp file #include "ClassLocalStatic.h" int Bar::b_ = initialize(); In my application project
// main.cpp #include <iostream> #include "ClassLocalstatic.h" int main(int argc, const char * argv[]) { std::cout << Foo::get().geti(); return 0; }