Ray*_*ann 0 c++ gcc std clang visual-c++
使用编译器资源管理器:
#include <iostream>
#include <memory>
struct test
{
test(int i)
{
std::cout << "test::test("<<i<<")\n";
}
~test()
{
std::cout << "~test()\n";
}
};
template<>
void std::destroy_at(test* p)
{
std::cout<<"std::destroy_at<test>\n";
p->~test();
}
int
main ()
{
auto sp = std::make_shared<test>(3);
return 33;
}
Run Code Online (Sandbox Code Playgroud)
使用带有 gcc x86-64 或 clang x86-64 的 C++20 给出预期输出:
Program returned: 33
test::test(3)
std::destroy_at<test>
~test()
Run Code Online (Sandbox Code Playgroud)
但 x64 msvc v19.32 给出:
Program returned: 33
test::test(3)
~test()
Run Code Online (Sandbox Code Playgroud)
好像 std::destroy_at 在这里没有效果。
这是符合行为、我的误解还是 msvc 不符合或配置错误?
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |