Является ли следующая реализация примером отличной идиомы счетчика? - PullRequest
0 голосов
/ 07 ноября 2019

Я знаю, как реализовать синглтон с использованием идиомы изящного счетчика , но мне интересно, можно ли считать такую ​​же реализацию, использующую shared_ptr + weak_ptr, как одну. Вот оно:

struct foo
{
    foo &operator=(const foo &) = delete;
    foo(const foo &) = delete;

    static shared_ptr<foo> get_instance()
    {
        static std::weak_ptr<foo> weak_instance;
        std::shared_ptr<foo> instance = weak_instance.lock();
        if (!instance) {
            instance.reset(new foo());
            weak_instance = instance;
        }
        return instance;
    }

private:
    foo() {}
};                                                          

Единственный экземпляр foo будет удален, как только его последний shared_ptr будет уничтожен.

Можно ли это считать примером одиночного использования идиома изящного счетчика или это просто похоже на него?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...