是否有 SFINAE 模板来检查 class 是否没有任何类型的功能?
Is there a SFINAE-template to check if a class has no functions of any kind?
我想检查给定的 class 是否 只有以下 :
- 非静态数据成员
- 构造函数(默认或用户定义)
- 析构函数(默认或用户定义)
除了用户定义的构造函数和析构函数之外,此类型(至少在视觉上声明方面)与 POD 类型相同。我试图为这种类型找到一个术语,但我认为它不存在。
有没有办法使用一些 SFINAE-hackery 来检查这个?
不,没有这样的方法。考虑以下因素:
struct A { };
struct B { void UniqueFunctionName9814(); };
没有SFINAE方法可以区分这些,因为你不能枚举成员函数名,也不能预测随机函数名。因此 B::UniqueFunctionName9814
无法检测到,除了 B::UniqueFunctionName9814
之外,两个 类 是相同的。
我想检查给定的 class 是否 只有以下 :
- 非静态数据成员
- 构造函数(默认或用户定义)
- 析构函数(默认或用户定义)
除了用户定义的构造函数和析构函数之外,此类型(至少在视觉上声明方面)与 POD 类型相同。我试图为这种类型找到一个术语,但我认为它不存在。
有没有办法使用一些 SFINAE-hackery 来检查这个?
不,没有这样的方法。考虑以下因素:
struct A { };
struct B { void UniqueFunctionName9814(); };
没有SFINAE方法可以区分这些,因为你不能枚举成员函数名,也不能预测随机函数名。因此 B::UniqueFunctionName9814
无法检测到,除了 B::UniqueFunctionName9814
之外,两个 类 是相同的。