Я понимаю std::shared_ptr<int>
, std::shared_ptr<someClass>
и т.д. c. Я тоже понимаю void
. Но я смутился, когда недавно увидел такое объявление (т.е. std::shared_ptr<void>
). Это неправильное использование общего указателя? Или есть какое-то специальное использование?
Может быть, чтобы скрыть истинный тип чего-либо (с чем я согласен с @ user4581301). Я хочу сказать, чтобы скрыть реализацию. Думаю, я прав. Но такого фрагмента кода я раньше не видел. Поэтому я публикую этот вопрос и надеюсь подтвердить свое предположение.
Фрагмент кода, который я видел, выглядит примерно так (он был упрощен, проверьте cpp .sh / 967f4z):
#include <memory>
#include <iostream>
int main()
{
std::shared_ptr<void> p = std::make_shared<int>(5);
std::cout << *(std::static_pointer_cast<std::shared_ptr<int>>(p)) << std::endl;
}