不能推导模板参数
Template argument cannot be deduced
我试图使用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>
]
那么为什么不能推导出template实参呢?我该如何修复它?
这是由于VC10当前版本中的一个错误,无法正确解决make_pair
的过载。
这里有一个关于这个确切问题的讨论,以及使用VC10支持的c++ 0x lambda表达式的解决方案。
相关文章:
- C++ 中的线程不能使用参数
- 为什么我们不能重复使用具有不同模板参数的别名模板标识符?
- 为什么我不能将引用作为 std::async 的函数参数传递
- Clang-Format 不能正确分配函数参数
- 为什么带有指针子对象的文字类类型的 constexpr 表达式不能是非类型模板参数
- 可变参数函数模板不能很好地使用 std::function 作为参数
- 为什么我不能用两个参数重载 C++ 运算符 []?
- 为什么std::{container}::template不能推导其参数类型
- 为什么在此上下文中非类型模板参数不能是自动的
- 为什么模板参数不能从 std::addressof 解析<int>?
- 为什么默认参数不能依赖于非默认参数?
- 为什么这个 const 参数不能与非类型模板参数匹配?
- 为什么 void 参数不能存在于具有多个参数的函数中?
- 为什么模板类型参数不能隐式强制转换?
- 为什么Qt信号的参数不能用typedef类型定义?
- Int函数参数不能正常工作
- v_list(可变数参数)不能正确转换
- omnet++:未知参数.不能在模拟中使用模块参数
- 在类声明中,为什么构造函数中的参数不能与私有部分中定义的变量同名?
- MSB3305:正在处理的COM引用-至少有一个参数不能被运行时封送处理程序封送