Я уверен, что на это можно было бы ответить, но я не смог найти сводный ответ.
Каковы проблемы со следующим синглтоном, который является просто функцией и гарантированно имеет инициализацию и предполагая, что T поддерживает оператор !, необходимые конструкторы, функции и т. Д.?(Я не ищу безопасности потока).Более того, другие могут создавать объекты T, так как T в моем случае - это дескриптор базы данных, который я хочу использовать для жизни моей программы.
template<typename T>
T* getInstance(){
static T instance;
if ( !instance && !instance.initialize() ){
return NULL;
}
else {
return &instance;
}
}