可以从模板函数返回整数吗?

And*_*rew 4 c++ templates function

我想写一个符号函数模板.我是这样做的:

template<class T> T sign(const T &value)
{
    if (value > 0) return 1;
    else if (value < 0) return -1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它正在工作,但我不确定当实际上我的函数应该返回T时返回数值是否合适.这个函数好吗?

Yoc*_*mer 7

不,T可能是没有整数强制转换的类型.

在这种情况下,它将在编译时失败.

如果您希望它是一个整数设计,请声明它.

template<class T> int sign(const T &value)
{
    if (value > 0) return 1;
    else if (value < 0) return -1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)