Templates 是否启用以检查传递的类型是否为兼容函数?
考虑以下代码:Templates 是否启用以检查传递的类型是否为兼容函数?,templates,c++11,template-meta-programming,typetraits,enable-if,Templates,C++11,Template Meta Programming,Typetraits,Enable If,考虑以下代码: template <class Function, class = typename std::enable_if</*SOMETHING*/>::type> apply(Function&& f); 它执行提供的函数 要使用SFINAE,我想检查函数是否满足以下条件: 它需要一个可转换为常量unsigned int的参数 它返回可转换为std::string的内容 我必须写什么来代替/*SOMETHING*/?如果没有为apply指定返
template <class Function, class = typename std::enable_if</*SOMETHING*/>::type>
apply(Function&& f);
它执行提供的函数
要使用SFINAE,我想检查函数是否满足以下条件:
它需要一个可转换为常量unsigned int的参数
它返回可转换为std::string的内容
我必须写什么来代替/*SOMETHING*/?如果没有为apply指定返回值,我将选择int: 使用常量unsigned int参数调用:
std::declval<Function()(std::declval<const unsigned int>())
呼
std::declval<Function>()
std::declval<Function()(std::declval<const unsigned int>())
decltype(std::declval<Function()(std::declval<const unsigned int>()))
std::is_convertible<decltype(std::declval<Function()(std::declval<const unsigned int>())), std::string>