免责声明:我已经看到了这个问题,而我正是在问decltype
,在接受的答案中建议如何使用它。
基本上,我尝试(有点好玩,有点方便,有点学习目的)为标准算法实现小型包装器,以简化它们在应用于整个容器时的使用。主要思想是摆脱.begin()
并.end()
仅指定必须应用算法的容器。
然后,我想知道是否有可能(顺便说一句并不愚蠢)从标准算法返回类型本身推断我的包装器的返回类型。
目前,我尝试了以下方法(对于 std::count):
template<class Cnt,
class T>
inline
auto count(Cnt _cnt, const T& _val) -> decltype(std::count){}
但它在编译时给了我一个错误:
无法专门化函数模板''未知类型' ragut::count(Cnt,const T &)'
我认为仅仅说 可能是不够的decltype(std::count)
,并假设它要求一个更具体的论点,比如:
decltype(std::count<std::iterator<std::input_iterator_tag,Cnt::value_type> >)
但这给出了同样的错误。
那么我想知道它是否真的不愚蠢并且可以这样做。