std::is_trivially_destructible来判断 一个 内置类型或structure/class/union类型 是否为 “容易销毁的(trivially destructible)”,从字面意思也可以看出,主要是check这个类型的 析构函数 。官网给出如下解释:
A trivially destructible class is a class (defined with class, struct or union) that:
- uses the implicitly defined destructor.
- the destructor is not virtual.
- its base class and non-static data members (if any) are themselves also trivially destructible types.
如果一个类中的 非静态成员变量 是 not rivially destructible types,那么 这个类 也将是not rivially destructible types,std::is_trivially_destructible::value将返回false 。
在SystemC中,对于sc_bv 类型,由于其基类sc_bv_base有自定义析构函数,所以std::is_trivially_destructible>::value 返回false 。
virtual ~sc_bv_base(){ delete [] m_data; } 参考:is_trivially_destructible - C++ Reference
C++ std::is_trivially_destructible用法及代码示例 - 纯净天空
STL in C++11 (Allocator 2) - 简书
【std::is】
// execute://g++ -g -Wall -lsystemc -m64 -pthread main.cpp//-L/$(your systemc path)/lib-linux64//-I/$(your systemc path)/include-I/$(your systemc path)/src/tlm_utils -o sim#include // C++ program to illustrate// std::is_trivially_destructible#include #include using namespace std;struct Y{Y(int, int){};};struct X{// Destructor~X() noexcept(false){}};struct Z{~Z() = default;};class A{virtual void fn() {}};class MyBvClass{sc_dt::sc_bv<2> m_test_mem;};int sc_main(int argc, char **argv){cout << boolalpha;cout << "int:"<< std::is_trivially_destructible::value<< endl;cout << "struct X:"<< std::is_trivially_destructible::value<< endl;cout << "struct Y:"<< std::is_trivially_destructible::value<< endl;cout << "struct Z:"<< std::is_trivially_destructible::value<< endl;cout << "class A:"<< std::is_trivially_destructible::value<< endl;cout << "class MyBvClass:"<< std::is_trivially_destructible::value<< endl;sc_core::sc_start();return 0;} - 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
