Здравствуйте, lnkuser, Вы писали:
L>Как я понял это как раз случай для синглетона:
L>L>// other_module.cpp
L>auto g_log = Log::instance();
L>*g_log << loglevel::info << "some text";
L>
L>L>// other_module2.cpp
L>auto g_log = Log::instance();
L>*g_log << loglevel::info << "some text2";
L>
L>Все вроде идеально, но тут будет ошибка линкования.
На таком уровне понимания проблемы тебе надо сначала почитать книжку по языку С++ или даже С,
потому что модели памяти у них одинаковые.
Почитай про классы памяти, области видимости и static.
В таком раскладе обе переменные auto g_log должны быть объявлены static, иначе будет нарушение ODR.
Да, и к работе потоков это не имеет никакого отношения (пока).