1
は、私のようなクラスがあるとします。このクラスのチェック
struct A {
public:
A(int a, int c): a_(a+c), c_(a-c) { }
A(const A& arg): a_(arg.a_), c_(arg.c_) { }
int a_;
char c_;
};
オブジェクトは、いくつかのdinamically割り当てられたメモリ領域の内側に位置しています。このメモリ領域が解放されている間、デストラクタは呼び出されることは想定されていません。 デストラクタが本当に空であることを確認したいと思います。たとえば、誰かがstd::string s_;
メンバをクラスAに追加すると、デストラクタが呼び出されない場合は明らかにメモリリークになります。その後、私は追加することができますチェックにはコンストラクタとコピーコンストラクタがなかった場合は
:
static_assert(std::is_trivial<A>::value)
しかし、クラスAのために、それは失敗します。
私の質問:そのようなクラスのデストラクタが本当に空であり、何もしないのであれば、何とかコンパイル時にチェックできますか?
std::is_trivially_destructible<A>::value
#include <type_traits>
に確認してください:
ありがとう、それは私が探していたものです。私はそれを逃したようだ。 –