我能够检查通过指针或引用传递的对象是否是动态分配的吗?
示例:
T t;
T* pt = new T();
is_tmp(&t); // false
is_tmp(pt); // true
上下文
我非常清楚这看起来像是糟糕的设计,实际上也确实如此,但我正在尝试扩展我不能(或者不应该)修改的代码(当然我会责怪那些不是我的代码 ;) )。它调用一个方法(我可以覆盖),该方法将删除
传递的对象,还有其他仅适用于动态分配对象的事项。现在,我想检查我是否有可以删除
的东西,或者它是一个临时的。
我永远不会传递全局(或静态)变量,所以我在这里留下了未定义的部分。
enum class Alloc { by_static, by_thread, dynamic, automatic };
thenT t{Alloc::automatic};
orT* pt = new T{Alloc::dynamic};
- Eljay