首先 std::is_trivila 定义
template< class T >
struct is_trivial;
结构成员函数: value
返回true,如果T 包含默认的构造函数。
其他情况下,返回false。
一种可能的实现方式::
template< class T >
struct is_trivial : std::integral_constant<
bool,
std::is_trivially_copyable<T>::value &&
std::is_trivially_default_constructible<T>::value
> {};
样例:
struct A {
A()= default;
int m;
};
struct B {
int m;
};
struct C{
C(){}
int m;
};
int main(int argc, char**argv)
{
std::cout << std::boolalpha;
std::cout << std::is_trivial<A>::value << '\n';
std::cout << std::is_trivial<B>::value << '\n';
std::cout << std::is_trivial<C>::value << '\n';
}
输出:
true
true
false
原文链接:https://blog.youkuaiyun.com/TH_NUM/article/details/95384976
本文深入探讨了C++中std::is_trivial类型特质的定义与实现,通过具体示例展示了其如何判断类型是否具有默认构造函数,以及在不同结构体中的表现。

被折叠的 条评论
为什么被折叠?



