我怎么知道一个指针是一个 RValue 还是我不知道我在说什么......喝啤酒时这个非常荒谬的想法突然出现在我的脑海里......
如果您有愚蠢的程序员/用户怎么办..
假设您有以下课程:
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 指针吗?我怎么称呼它?