无法推断模板参数

时间:2011-05-03 01:30:14

标签: c++ templates

我正在尝试使用std::transform将两个相等大小的矢量合并为一对矢量。

int main()
{
    vector<string> names;
    // fill it with names    
    vector<int> nums;
    // fill it with numbers

    typedef pair<int,string> Pair_t;
    vector<Pair_t> pv;

    transform(nums.begin(), nums.end(),
              names.begin(), back_inserter(pv),
              make_pair<int,string>);
}

VC10给了我:

'_OutIt std::transform(_InIt1,_InIt1,_InIt2,_OutIt,_Fn2)' : could not deduce template argument for '_OutIt' from 'std::back_insert_iterator<_Container>'
          with
          [
              _Container=std::vector<Pair_t>
          ]

那么为什么不能推导出模板参数呢?我该如何解决?

1 个答案:

答案 0 :(得分:5)

这是由于当前版本的VC10中的一个错误导致make_pair的重载无法正确解决。

讨论了这个确切的问题here,以及使用VC10支持的C ++ 0x lambda表达式的解决方法。