Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;0x自动、decltype和模板函数_C++_C++11 - Fatal编程技术网

C++ C++;0x自动、decltype和模板函数

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

我一直在阅读关于C++0x的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;
}
#包括
模板
自动添加它们(第一种类型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.所说的。编译器的错误真的可以更清楚。