我一直在阅读关于C ++ 0x的this CodeProject文章,并在VC2010中快速尝试了一下。但是我遇到了编译错误,我对这个问题有点不知所措。
#include < iostream>
template <typename FirstType, typename SecondType>
auto AddThem(FirstType t1, SecondType t1) -> decltype(t1 + t2)
{
return t1 + t2;
}
int main()
{
auto a = 3.14;
auto b = 3;
auto c = AddThem<decltype(a),decltype(b)>(a,b);
std::cout << c << std::endl;
return 0;
}
导致此错误:
错误C2086:'FirstType t1':重新定义1&gt; main.cpp(4): 看't1'的声明 1&gt; main.cpp(14):错误C2780: ''unknown-type'AddThem(FirstType)': 期望1个参数 - 2提供1&gt;
main.cpp(4):见声明 'AddThem'1&gt; main.cpp(14):致命错误 C1903:无法从之前恢复 误差(S);停止编译
感谢任何想法。
答案 0 :(得分:10)
这是因为您为两个参数t1
命名。您可能打算拨打第二个t2
。
答案 1 :(得分:0)
这是我的错。您应该已经报告了CodeProject本身。我随便找到了这个话题。 是的,它们应该是两个不同的名称。
现在,我还需要做一个改变!