1
我怀疑在目前的C++标准下这是不可能的,但我仍然会问。has_member_of_type - C++中的模板元编程
我想要实现的是让编译器在编译期间判断出类是否包含Base类型的任何成员变量(及其派生类)。
例如
struct Base
{
};
struct Derived : public Base
{
};
struct Foo
{
int x;
Derived a;
Derived b;
};
struct Bar
{
int x;
};
我想沿着线的东西,
has_member_of_type<Base, Foo>::value
在这种情况下将是真实的(一个或多个成员瓦尔有基地的基本类型),而其他任何东西(包括基本类型)会被认为是错误的。
例如
has_member_of_type<Base, char>::value = false
has_member_of_type<Base, Bar>::value = false
请注意,我试图用has_member_of_type我在图书馆发现和使用不同的代码分支,如果用户类有某种类型的成员变量。