C++ C++;11删除类类型?

C++ C++;11删除类类型?,c++,c++11,C++,C++11,在C++11 N3485 5.3.5.1中,它表示: [code>delete]的操作数应该是指向对象类型或类类型的指针。如果是类类型,则操作数将在上下文中转换为指向对象类型的指针 这种用法的示例是什么(操作数是类类型) 如果是类类型,则操作数在上下文中隐式转换为 指向对象类型的指针 所以,您可以对对象使用delete,但仅当此类型具有指向指针的隐式转换运算符时 class A { public: class Inner {}; A() { inner = new

在C++11 N3485 5.3.5.1中,它表示:

[code>delete]的操作数应该是指向对象类型或类类型的指针。如果是类类型,则操作数将在上下文中转换为指向对象类型的指针

这种用法的示例是什么(操作数是类类型)

如果是类类型,则操作数在上下文中隐式转换为 指向对象类型的指针

所以,您可以对对象使用
delete
,但仅当此类型具有指向指针的隐式转换运算符时

class A
{
public:
   class Inner {};
   A()
   {
      inner = new Inner();
   }
   operator Inner*() { return inner; }
private:
   Inner* inner;
};

int main()
{
   A* a = new A();
   delete *a;
   delete a;
}
然而,这并不是C++11的新特性,在C++03标准中有几乎相同的单词

操作数应具有指针


类型,或具有单个转换函数(12.3.2)到指针类型的类类型。

你是说有任何示例或示例显示它有用吗?任何都可以,但有用是首选的。有人知道,为什么在n3376和n3485之间更改措辞吗?找不到任何相关信息…啊,这是有道理的。谢谢。有时我希望C++标准会更…严格的有规律的正如@riv所提到的,除了假装一个指针包装器就是一个指针之外,我看不到从这个行为中得到任何好处(但总的来说,这看起来像是一个非常、非常漏洞百出的抽象)。