C++ C++;0x自动、decltype和模板函数
我一直在阅读关于C++0x的CodeProject文章,并在VC2010中进行了快速尝试。然而,我遇到了一个编译错误,我有点不知道问题是什么C++ C++;0x自动、decltype和模板函数,c++,c++11,C++,C++11,我一直在阅读关于C++0x的CodeProject文章,并在VC2010中进行了快速尝试。然而,我遇到了一个编译错误,我有点不知道问题是什么 #include < iostream> template <typename FirstType, typename SecondType> auto AddThem(FirstType t1, SecondType t1) -> decltype(t1 + t2) { return t1 + t2; } in
#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;
}
#包括
模板
自动添加它们(第一种类型t1,第二种类型t1)->decltype(t1+t2)
{
返回t1+t2;
}
int main()
{
自动a=3.14;
自动b=3;
自动c=添加它们(a,b);
std::cout main.cpp(14):错误C2780:
“未知类型”添加它们(第一类型):
需要1个参数-提供2个参数1>
主要cpp(4):见
“AddTheme”1>main.cpp(14):致命错误
C1903:无法从以前的恢复
错误;正在停止编译
谢谢你的建议。这是因为你将两个参数都命名为t1
。你可能想调用第二个参数t2
,这是我的错误。你应该报告CodeProject本身。我偶然发现了这个主题。
是的,他们应该是两个不同的名字
现在,我还需要做一个更改!只需将其称为AddThem(a,b)
,模板参数将被推导出来。我想我需要更多的咖啡-我显然失去了它:(谢谢!出于品味的考虑,我认为在编写auto a=3.14;auto b=3;IMHO时丢失类型定义是不好的,我认为auto可以很好地猜测长且难以阅读的类型名,即在模板定义内。我同意。但我只是在玩C++0x,想看看使用auto是什么样子。这不是开玩笑:(有点不好意思,我没注意到!@Chris:就怪编译器没有把它弄清楚;)正如@matthieum.所说的。编译器的错误真的可以更清楚。