C++中std::is_empty和std::is_empty_v

An empty class is a class that stores no data, either cv-qualified or not.
is_empty identifies as such all classes (declared with class or struct, but no union) that fulfill all of the following:

has no non-static members other than bit-fields of length 0,
has no virtual functions and no virtual base class, and
has no base class for which is_empty is false_type.

// is_empty example
#include <iostream>
#include <type_traits>

struct A { };
struct B { void fn(){} };
struct C { int x; };

int main() {
  std::cout << std::boolalpha;
  std::cout << "is_empty:" << std::endl;
  std::cout << "int: " << std::is_empty<int>::value << std::endl;
  std::cout << "A: " << std::is_empty<A>::value << std::endl;
  std::cout << "B: " << std::is_empty<B>::value << std::endl;
  std::cout << "C: " << std::is_empty<C>::value << std::endl;
  return 0;
}

is_empty:
int: false
A: true
B: true
C: false

class Person3 
{
public:
	void x() {

	}
};

bool sa2 = std::is_empty_v<Person3>;
bool sa3 = std::is_empty<Person3>();

sa2 = true
sa3 = true

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值