2011-01-19 10 views
-1

私はthisという質問に答えていました。そして、私が何を話しているのか分からなかったときに口を切ったことに気がつきました。ファンクションテンプレートのデフォルトのテンプレートパラメータ

私の質問はこれです。これらの関数を1つにマージすることは可能ですか?

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)を使用しなくても可能です。

答えて

4

これらの機能を1つにマージすることはできますか?

悲しいことに、関数テンプレートパラメーターの既定のテンプレート引数を持つことはできませんし、既定の関数引数を使用してテンプレート引数を推測することはできません。

C++ 0x機能を使用せずに2番目のコードを最初から再利用していますか?

はい:std::iterator_traits<T>::value_typeを使用できます。

関連する問題