"Паттерном" это вообще вряд ли можно было бы назвать, так как паттерн здесь уже есть — это синглтон.
Решение обладает следующими недостатками:
1. Дикая неэффективность: каждое обращение к экземпляру — поиск в std::map. Это делает данное решение практически непригодным.
2. Неудобная длинная запись при получении экземпляра.
3. Модель многопоточности задается для всех синглтонов сразу, а не для каждого в отдельности.
Да и вообще, непонятно для каких целей это нужно. Для тех, у кого в программе очень много синглтонов? В нормальной программе будет от силы несколько синглтонов, причем приоритетом часто является скорость доступа к экземпляру.
Кстати, такую же функциональность, как в вашем примере, можно получить таким элементарным кодом (только он гораздо эффективнее):
template <class Type>
inline Type& GetInstance()
{
static Type instance;
return instance;
}
(Если нужна многопоточность, тело функции соответствующим образом изменить).