这应该是模板元编程里的概念吧,有时候我们确实需要获取成员变量的类型,这里提供一个方法借助模板的偏特化达到目的:
- template< typename P>
- struct MemberType;
- template< typename F, typename T >
- struct MemberType< F T::* >
- {
- typedef F member_type;
- typedef T class_type;
- };
假设我们有个结构定义如下:
- struct Call
- {
- int ID;
- std::string Key;
- };
通过 MemberType< decltype( &Call::ID ) >::member_type 就可以获得是变量 ID 的类型(int)了。
注:如果你的编译器不支持 decltype, 可以使用 boost 库里的 BOOST_TYPEOF 代替。
转自:
http://blog.csdn.net/jadedrip/article/details/5583300