Singletons are not safe in LRC
Issue generated from Tuleap's migration script. Originally submitted by: Guillaume Roguez (guillaume)
LRC uses massively Singletons with an implementation based on class global static member (a pointer).
The first initialization is done by checking the value of the static member, set to nullptr during compilation unit initialization.
This implementation is not thread-safe and hides loop-dependency between classes.
I propose to use C++11 safe way by using local static initialization inside a static method of the class (i.e. instance()).
This is known as "Construct Members On First Use Idiom"