プロジェクトで使い始めたばかりstd::variant
です。私は疑問を持っています。std::variant
以下に示すコードで、 のデストラクタは何をしますか。Variant はvoid*
データを保持します。void*
バリアントが範囲外になると、ポインターが指していた実際のオブジェクトではなく、メモリのみが解放されると思います。したがって、この場合、メモリ リークが発生します。私の理解が正しいかどうか知りたいです。
#include <iostream>
#include <memory>
#include <variant>
using namespace std;
class A {
public:
~A(){
cout<<"Destructor called"<<endl;
}
};
int main() {
std::variant<void*> data;
A* b = new A();
data = (void*)b;
return 0;
}