【发布时间】:2017-07-08 08:41:30
【问题描述】:
在 C++11 及更高版本中,<type_traits> 标头包含许多用于类型检查的类,例如 std::is_empty、std::is_polymorphic、std::is_trivially_constructible 和许多其他类。
虽然我们像普通类一样使用这些类,但我想不出任何方法来编写这些类的定义。没有多少 SFINAE(即使使用 C++14/17 规则)或其他方法似乎能够判断一个类是多态的、空的还是满足其他属性。为空的类仍会占用正数空间,因为该类必须具有唯一的地址。
那么,编译器如何在 C++ 中定义这样的类?或者编译器可能有必要了解这些类名并专门解析它们?
【问题讨论】:
-
我知道我以前在 SO 上读过这篇文章,只是不记得在哪里了。
-
@PasserBy 你的意思是this one?
-
@PasserBy 啊,所以stackoverflow.com/questions/20181702/…
标签: c++ c++11 typetraits