Ordered static initialization in C++
Exmaple:
#include "StaticInit.hpp"
#include <iostream>
struct Widget {
ORDERED_STATIC_INIT_BEGIN(0)
std::cout << "First Widget initialization\n";
ORDERED_STATIC_INIT_END
ORDERED_STATIC_INIT_BEGIN(3)
h = 10;
std::cout << "Second Widget initialization\n";
ORDERED_STATIC_INIT_END
static int h;
};
int Widget::h;
struct Button : Widget {
ORDERED_STATIC_INIT_BEGIN(1)
std::cout << "First Button initialization\n";
ORDERED_STATIC_INIT_END
};
int main(){
ProjectUtilites::OrderedStaticInitializer::init();
return 0;
}
Print in console:
First Widget initialization
First Button initialization
Second Widget initialization