假设我有一个类型为std::vector::iterator的变量x,它是通过放置new(placement new)分配的(出于其他原因),例如:
如何以符合标准的方式调用对象的析构函数?可以使用以下代码实现:
例如在gcc中工作,但在clang中不起作用。
new((void*)&x) std::vector<int>::iterator();
如何以符合标准的方式调用对象的析构函数?可以使用以下代码实现:
x.std::vector<int>::iterator::~iterator();
例如在gcc中工作,但在clang中不起作用。
struct A { std::vector<int>::iterator x; ... }
并且你有一个struct A*
来初始化和销毁它。(在我的情况下,它是 Python 扩展类实例。) - robertwb