Поскольку инициализация статической переменной теперь гарантированно безопасна для потоков, синглтон Мейера должен быть безопасным для потоков.
Singleton* Singleton::instance() {
static Singleton _instance;
return &_instance;
}
Теперь вам нужно решить главную проблему: в вашем коде есть синглтон.
РЕДАКТИРОВАТЬ: на основе моего комментария ниже: Эта реализация имеет большой недостаток по сравнению с другими. Что произойдет, если компилятор не поддерживает эту функцию? Компилятор будет выдавать поток небезопасного кода даже без выдачи предупреждения. Другие решения с блокировками не будут компилироваться, даже если компилятор не поддерживает новые интерфейсы. Это может быть хорошей причиной, чтобы не полагаться на эту функцию, даже для вещей, отличных от одиночных.