我不理解boost :: python库中的以下模板声明(准确地说是... / boost_1_51 / boost / python / detail / msvc_typeinfo.hpp的第47行):
template< typename T > T&(* is_ref_tester1(type<T>) )(type<T>) { return 0; }
其中type
为template <class T> struct type {};
它似乎在功能上等同于:
template<typename T>
struct func_type_getter {
typedef T&(*func_type)(type<T>);
};
template< typename T >
typename func_type_getter<T>::func_type is_ref_tester1(type<T>) { return 0; }
这些是等同的,只是简写,还是有人可以解释这些差异?
答案 0 :(得分:3)
是的,两者是等价的。这是如何阅读单行代码:
template< typename T > T&(* is_ref_tester1(type<T>) )(type<T>) { return 0; }
^ ^ ^ ^
| | | |
| | | 3. it's return type is a pointer to a function taking a type<T>
| | |
| | 2. it's a function taking a type<T>
| |
| 1. this is the declared identifier
|
4. this is the return type of the function whose pointer is returned