为什么我可以在模板中的基本类型上调用析构函数?

时间:2015-08-31 07:26:52

标签: c++

我正在为内存分配器实现一些模板,并且遇到了一些我希望不编译的代码。在编写和测试模板函数来调用析构函数之后,我发现它在传入int*之后仍然有效。

测试代码:

#include <iostream>

template<typename Class>
void CallDestructor(Class* InObj)
{
    InObj->~Class();
}

int main()
{
    int* test = new int;
    *test = 5;
    std::cout << *test << std::endl;
    CallDestructor(test); // Why does this compile?
    //test->~int();       // This does not compile which is what I expected for template function
    std::cout << *test << std::endl;
    delete test;
}

代码在我的www.cpp.sh和Visual Studio 2013中编译和运行。

感谢您的任何见解!

0 个答案:

没有答案