繁体   English   中英

功能模板中的默认模板化参数

[英]Default templated parameters in function templates

我在回答这个问题。 当我不知道自己在说什么时,我意识到自己会mouth之以鼻。

所以我的问题是这个。 是否可以将这些功能合并为一个? (不必担心这是已经存在的功能的完全重复,我仅以它为例)

template <class iterType1, class iterType2, class boolPred>
bool equal(iterType1 begin, iterType1 end, iterType2 e, boolPred pred){

    while(begin != end){
        if(!pred(*begin, *e))
            return false;
        ++begin;
        ++e;
    }
    return true;
}

template <class iterType1, class iterType2>
bool equal(iterType1 begin, iterType1 end, iterType2 e){
    return equal(begin, end, e, std::equal_to<decltype(*begin)>());
}

此外,甚至在不使用C ++ 0x功能(decltype)的情况下,也有可能在第二个代码中重新使用第一个代码。

是否可以将这些功能合并为一个?

可悲的是没有。 函数模板参数不能具有默认模板参数,并且默认函数参数不能用于推导模板参数。

在不使用C ++ 0x功能的情况下,是否有可能在第二个代码中重新使用第一个代码?

是的:您可以使用std::iterator_traits<T>::value_type

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM