C ++ 0x auto,decltype和模板函数

时间:2010-08-14 20:51:19

标签: c++ c++11

我一直在阅读关于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);停止编译

  

感谢任何想法。

2 个答案:

答案 0 :(得分:10)

这是因为您为两个参数t1命名。您可能打算拨打第二个t2

答案 1 :(得分:0)

这是我的错。您应该已经报告了CodeProject本身。我随便找到了这个话题。 是的,它们应该是两个不同的名称。

现在,我还需要做一个改变!