SIOF = static initialization order fiasco
https://isocpp.org/wiki/faq/ctors#static-init-order
ODR = one definition rule
https://en.wikipedia.org/wiki/One_Definition_Rule
DOF = Destruction Order Fiasco
https://isocpp.org/wiki/faq/dtors
SIOF = static initialization order fiasco
https://isocpp.org/wiki/faq/ctors#static-init-order
ODR = one definition rule
https://en.wikipedia.org/wiki/One_Definition_Rule
DOF = Destruction Order Fiasco
https://isocpp.org/wiki/faq/dtors
head k* && g++ -fsanitize=address -static-libasan -g -O -Wall -std=c++14 k.cpp k2.cpp && ASAN_OPTIONS=detect_odr_violation=1 ./a.out
This is awesome step-by-step on how to debug undefined symbol issues in your c++ programs:
http://gdwarner.blogspot.co.uk/2009/03/c-runtime-symbol-lookup-error.html