Как я могу определить, является ли указатель R-значением или я не знаю, о чем говорю … Эта действительно нелепая идея пришла мне в голову, когда я пил пиво …
Что делать, если у вас тупой программист / пользователь ..
Предположим, у вас есть следующий класс:
template<typename T>
class Container
{
private:
std::vector<T> Storage;
public:
Container(T Anything) : Storage() {Storage.push_back(Anything);}
}
и пользователь делает:
Container<Object*> C(new Object(Params));
Тогда как я могу удалить это? Я хочу быть в состоянии отличить вышесказанное от нижеследующего:
Object* O = new Object(Params);
Container<Object*> C(O);
Я просто хочу знать. Я знаю, что первый пример, очевидно, не должен использоваться, но давайте предположим, что это будет или что я хочу обнаружить утечки кода и удалить их.
Как это может быть сделано? Это указатель RValue? Как я это называю?
Проще всего было бы обернуть голые указатели в некоторый контейнер ресурсов, например shared_ptr
,
Других решений пока нет …