Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++;返回参数上的模板函数重载?_C++_Templates_Types_Return_Overloading - Fatal编程技术网

C++ 可以是C++;返回参数上的模板函数重载?

C++ 可以是C++;返回参数上的模板函数重载?,c++,templates,types,return,overloading,C++,Templates,Types,Return,Overloading,使用相同的模板声明,是否可以使用相同的名称、相同的参数列表但不同的返回类型来区分两个函数 template <class T> int f()... template <class T> short f()... 模板 int f()。。。 模板 短f()。。。 或者,需要一些特殊的代码来实现这一点 谢谢。您确实可以拥有具有相同名称、相同参数类型和相同返回类型的函数模板(但对于常规函数您不能) 模板 int f(){/*..*/} 模板 短f(){/*..*/}

使用相同的模板声明,是否可以使用相同的名称、相同的参数列表但不同的返回类型来区分两个函数

template <class T>
int f()...

template <class T>
short f()...
模板
int f()。。。
模板
短f()。。。
或者,需要一些特殊的代码来实现这一点


谢谢。

您确实可以拥有具有相同名称、相同参数类型和相同返回类型的函数模板(但对于常规函数您不能)

模板
int f(){/*..*/}
模板
短f(){/*..*/}
但是,它们的使用并不是很容易/很好:

auto i = static_cast<int(*)()>(&f<float>)(); // Call int f<float>
auto s = static_cast<short(*)()>(&f<float>)(); // Call short f<float>
auto i=static_cast(&f)(;//调用int f
自动s=静态施法(&f)(;//简称f

您是否有无法通过强制转换结果来解决的情况?如果除了返回类型之外,所有内容都相同,您如何知道要调用哪个函数?可以使用。
auto i = static_cast<int(*)()>(&f<float>)(); // Call int f<float>
auto s = static_cast<short(*)()>(&f<float>)(); // Call short f<float>