C++ 我使用模板为任何类型的数据类型添加了两个数字,但并没有成功

C++ 我使用模板为任何类型的数据类型添加了两个数字,但并没有成功,c++,C++,对于任何类型的数据类型,应该进行哪些更改 #include <iostream> using namespace std; template <class T> T add(T n1, T n2) { T res; res = (n1 + n2); return res; } int main() { double x, y; cout << "Enter first number : "; cin >> x

对于任何类型的数据类型,应该进行哪些更改

#include <iostream>
using namespace std;
template <class T>
T add(T n1, T n2)
{
    T res;
    res = (n1 + n2);
    return res;
}
int main()
{
    double x, y;
    cout << "Enter first number : "; cin >> x;
    cout << "Enter second number : "; cin >> y;
    cout << add(x, y);
}
#包括
使用名称空间std;
模板
T添加(T n1,T n2)
{
T res;
res=(n1+n2);
返回res;
}
int main()
{
双x,y;
cout>x;
cout>y;

cout您在评论中询问了如何添加short和int,或float和double;下面是一个在C++11和C++14中如何添加的示例

C++11:

template <typename T, typename U>
constexpr auto add( T t, U u ) -> decltype(t + u)
{
    return t + u;
}
template <typename T, typename U>
constexpr auto add( T t, U u )
{
    return t + u;
}
模板
constexpr自动添加(T,U)->decltype(T+U)
{
返回t+u;
}
C++14:

template <typename T, typename U>
constexpr auto add( T t, U u ) -> decltype(t + u)
{
    return t + u;
}
template <typename T, typename U>
constexpr auto add( T t, U u )
{
    return t + u;
}
模板
constexpr自动添加(T,U)
{
返回t+u;
}
这将允许您执行以下操作:

short a = 31;
long long b = 1234;
std::cout << add(a,b) << '\n';
短a=31;
长b=1234;
标准::cout可能是


coutadd是一个模板方法,必须用一个类型声明:add(args)

它是如何“工作”的?有什么问题吗?我看不出有什么问题。它应该可以正常工作。你的模板功能是正确的-你有什么问题?你的意思是你想做一些事情,比如在
int
中添加
short
?或者
float
double
并让它做正确的事情?不是问题,而是模板很嘈杂。
返回n1+n2;
也可以。您应该使用问题下的评论部分来要求澄清OP的需求。而此代码片段可能会解决问题,包括一个解释,以提高您的帖子质量。请记住,您是在为将来的读者回答问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。