问题标签 [pseudo-destructor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
123 浏览

c++ - 为标量类型显式定义的析构函数

如果我们编写以下代码,它可以正常工作。

我知道析构函数是特殊的成员函数(标准中有一个定义)。但是有没有办法显式定义一个函数将在调用伪析构函数时调用?目前尚不清楚为什么允许对此类类型进行伪析构函数调用。

0 投票
3 回答
111 浏览

c++ - 不合格的伪析构函数名称

这个简单的程序被 EDG (ICC) 接受,但被 GCC 和 Clang 拒绝。

是否形成良好?如果不是,为什么?

对于好奇的人:该程序不做任何事情,我很怀疑这种语言功能甚至没有用例。有模板,但它们是否生成表达式语法是有争议的。此类主题不适合本网站。这没东西看。


编辑:这个问题的标题很奇怪。我认为问题是之前缺少int::限定符~int。这个问题的灵感来自这个问答,它鼓励在调用类似的东西时省略限定符derived_object::~base_class()。然而,这是格式错误的,仅被 GCC 接受

0 投票
1 回答
128 浏览

c++ - 使用模板关键字的伪析构函数调用

以下代码无法使用clang 5.0.0编译(编译标志为-std=c++14 -Wall -Wextra -Werror -pedantic-errors -O0):

template这是一种强制编译带有关键字的伪析构函数调用的方法吗?

0 投票
2 回答
183 浏览

c++ - 为浮点常量调用伪析构函数的有效语法

考虑以下演示程序。

本程序由Microsoft Visual Studio Community 2019.

但是clanggcc发出这样的错误

如果像这样写表达式,( 0.f ).T::~T()那么所有三个编译器都会编译程序。

所以出现了一个问题:这个记录在0.f.T::~T()语法上是否有效?如果不是,那么什么语法规则被打破了?