【发布时间】:2014-10-15 18:56:00
【问题描述】:
这个简单的程序被 EDG (ICC) 接受,但被 GCC 和 Clang 拒绝。
格式是否正确?如果不是,为什么?
int main() {
int n;
n.~int();
}
致好奇者:该程序不做任何事情,我相当怀疑这种语言功能是否有用例。有模板,但它们是否生成表达式语法是有争议的。此类主题不适合本网站。这里没什么可看的。
编辑:这个问题的标题很奇怪。我认为问题是在~int 之前缺少int:: 限定符。这个问题的灵感来自this Q&A,它鼓励在调用derived_object::~base_class() 之类的东西时省略限定符。然而,这是格式错误的only accepted by GCC。
【问题讨论】:
-
该死,我正要从很久以前看到的评论中摘录,但它是your comment。
-
@chris 实际上这很有见地,当时我注意到“为了语法”需要
typedef int INT。事实上,int不是 type-name。 -
这个用例是
std::allocator::destroy()。 -
@T.C.那是一个模板,两阶段模板引擎在实例化时不会生成语法产生式。但是,这是我在后记中提到避免的话题。
标签: c++ destructor language-lawyer pseudo-destructor