是否可以使用decltype和\或std :: remove_reference調用析構函數(不使用操作符刪除)?以下是一個示例:用decltype和或std :: remove_reference調用析構函數
#include <iostream>
#include <type_traits>
using namespace std;
class Test
{
public:
Test() {}
virtual ~Test() {}
};
int main()
{
Test *ptr;
ptr->~Test(); // works
ptr->~decltype(*ptr)(); // doesn't work
ptr->~std::remove_reference<decltype(*ptr)>::type(); // doesn't work
return 0;
}
不,這是不可能的。 –
析構函數不是一個類型。 –
...但您可以使用函數模板來顯式調用dtor(推導類型)。不知道你會得到什麼,但。 – dyp