【问题标题】:Default templated parameters in function templates函数模板中的默认模板参数
【发布时间】:2011-06-11 21:59:55
【问题描述】:

我正在回答this 的问题。我意识到当我不知道自己在说什么时,我会说不出话来。

所以我的问题是这样的。是否可以将这些功能合并为一个? (别担心这是一个已经存在的函数的完全复制,我只是用它作为例子)

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++ templates default-value


    【解决方案1】:

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

    很遗憾,没有。函数模板形参不能有默认模板实参,并且默认函数实参不能用于推断模板实参。

    在不使用 C++0x 特性的情况下,是否可以在第二个中重用第一个代码?

    是的:您可以使用std::iterator_traits&lt;T&gt;::value_type

    【讨论】:

      猜你喜欢
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2012-03-26
      相关资源
      最近更新 更多