typedef typename
common_type<typename common_type<_Tp, _Up>::type, _Vp...>::type type;
};
- // @} group metaprogramming
/// declval
template<typename _Tp>
"declval() must not be used!");
return __declval_protector<_Tp>::__delegate();
}
+
+ /// result_of
+ template<typename _Signature>
+ class result_of;
+
+ template<typename _Functor, typename... _ArgTypes>
+ struct result_of<_Functor(_ArgTypes...)>
+ {
+ typedef
+ decltype( std::declval<_Functor>()(std::declval<_ArgTypes>()...) )
+ type;
+ };
+
+ // @} group metaprogramming
}
#endif // __GXX_EXPERIMENTAL_CXX0X__