在C+中具有_类型-模板元编程的_成员_+; 我怀疑在目前的C++标准下这是不可能的,但无论如何我会问。
我试图实现的是让编译器在编译时弄清楚一个类是否包含Base类型的任何成员变量(及其派生) e、 g 我想要一些类似的东西在C+中具有_类型-模板元编程的_成员_+; 我怀疑在目前的C++标准下这是不可能的,但无论如何我会问。,c++,metaprogramming,C++,Metaprogramming,我试图实现的是让编译器在编译时弄清楚一个类是否包含Base类型的任何成员变量(及其派生) e、 g 我想要一些类似的东西 has_member_of_type<Base, Foo>::value 具有类型为::value的\u成员\u 在这种情况下为true(一个或多个成员变量的基类型为base),而其他任何类型(包括基本类型)都将求值为false e、 g 具有类型为::value=false的\u成员\u 具有类型为::value=false的\u成员\u 请注意,如果用户
has_member_of_type<Base, Foo>::value
具有类型为::value的\u成员\u
在这种情况下为true(一个或多个成员变量的基类型为base),而其他任何类型(包括基本类型)都将求值为false
e、 g
具有类型为::value=false的\u成员\u
具有类型为::value=false的\u成员\u
请注意,如果用户类具有特定类型的成员变量,我正试图使用库中的has_member_of_type来检测和使用不同的代码分支。不,这是不可能的。你甚至不能访问成员(除非告诉他们名字),更不用说探测他们的类型了
has_member_of_type<Base, Foo>::value
has_member_of_type<Base, char>::value = false
has_member_of_type<Base, Bar>::value = false