2011-01-21 16 views
0

私は/ UCASE A C++ STLクラスをLCASEするための最良の方法で探していたと私はこの記事に出くわした:指定されたソリューションのC++関数テンプレートの質問

STL string to lower case

ワンました:

#include <algorithm> 
#include <string> 

std::string data = “Abc”; 
std::transform(data.begin(), data.end(), data.begin(), ::tolower); 

しかし、変換は次のようにstl_algo.hで定義されています

template<typename _InputIterator, typename _OutputIterator, 
     typename _UnaryOperation> 
    _OutputIterator 
    transform(_InputIterator __first, _InputIterator __last, 
      _OutputIterator __result, _UnaryOperation __unary_op) 
    { 
... 

それでは、どのCOMテンプレートインスタンス化パラメータを指定せずに呼び出されていますか?私の質問を明確にする

、私は次のように呼ばれるように変換関数を期待していた。

transform(std::string::iterator, std::string::iterator, 
      /* not sure what to put here for the predicate */); 

が、これは1オフ(特殊なケース)です、または私は基本的な何かが足りないのですか?

答えて

1

テンプレートパラメータは、関数引数から暗黙的に導出されます。