【发布时间】:2019-08-08 10:09:09
【问题描述】:
析构函数是一个特殊的成员函数,它不接受参数并且没有返回类型:几乎所有的 c++ 书籍中都提到了这一点。但是,在 libstd++ 库中,它使用以下内容来测试类型是否可破坏,
struct __do_is_destructible_impl
{
template<typename _Tp, typename _U = decltype(declval<_Tp&>().~_Tp())>
static true_type __test(int);
template<typename>
static false_type __test(...);
};
Gnu g++ 会用 typeid void 显示 _U,所以,析构函数返回一个类型?请专家解释一下 c++ 标准对此有何规定。
【问题讨论】:
-
标准库实现不一定是有效的 C++,所以我不会根据阅读做出假设。
标签: c++ c++11 language-lawyer destructor decltype