有沒有辦法使用模板,宏或二者的組合來檢查類內部的空析構函數以及它繼承的類內部? (is_trivially_destructible不會產生我所需要的)。檢查空的析構函數
class Test
{
public:
~Test(){};
};
class Temp2 : public Test
{
};
有沒有辦法使用模板,宏或二者的組合來檢查類內部的空析構函數以及它繼承的類內部? (is_trivially_destructible不會產生我所需要的)。檢查空的析構函數
class Test
{
public:
~Test(){};
};
class Temp2 : public Test
{
};
構造函數「是空的」並不意味着什麼,因爲任何非POD成員對象將/隱含/在那裏由編譯器(即使沒有析構函數聲明)破壞。
所以,其實你要的是有可能
std::is_pod<T>::value
當心:MSVC gets it wrong(例如,用於struct X : std::array<int, 4> {}
這爲 POD)
std::is_trivial<T>::value
這個想法是,只有構造函數沒有做任何魔術時,構造函數才能被跳過。施工和銷燬的目的是保持完美的平衡,所以如果施工方也是如此,那麼你就知道這個破壞器是微不足道的。
簡短的回答是,不,這是不可能的。 –
......但是你想要作爲一個更大的圖片來實現什麼? – Shoe
@Jefffrey我知道一些編譯器可以刪除調用空析構函數的循環,但是我想知道是否可以檢測到空析構函數。 – user985611