最近看stl源代码的时候,遇到template类static成员函数的使用,查了相关资料也没看明确的说法,下面是stl里type_traits文件的一个代码片段
struct __result_of_other_impl
{
template<typename _Fn, typename... _Args>
static __result_of_success<decltype(
std::declval<_Fn>()(std::declval<_Args>()...)
), __invoke_other> _S_test(int);
template<typename...>
static __failure_type _S_test(...);
};
template<typename _Functor, typename... _ArgTypes>
struct __result_of_impl<false, false, _Functor, _ArgTypes...>
: private __result_of_other_impl
{
typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type;
};
我有两个问题:
1._S_test函数没有搜到实现体,是不是这里只是为了偏特化不需要实现,当然也可能是编译器对它做了特殊处理。
2._S_test被声明成静态,不是无缘无故吧?我去查了相关网站没看到明确说明这个情况,也可能是我看漏了
谢谢指教
--
FROM 124.126.202.*