【发布时间】:2013-09-04 14:39:15
【问题描述】:
我不理解 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; }
这些是等价的,只是简写,还是有人可以解释其中的差异?
【问题讨论】:
-
是的,对于返回函数指针的函数来说,这是一个尴尬的“速记”。
-
有趣的是,cdecl.org 阻塞了它(一旦你删除了它不支持的模板)。将
T替换为int后即可使用。
标签: c++ function templates pointers