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 - Fatal编程技术网

C++ C++;未知类型的模板参数

C++ C++;未知类型的模板参数,c++,templates,C++,Templates,假设我们想要编写一个函数,该函数应该获取一个值作为模板参数(比如说,出于效率原因),但我们事先不知道所需参数的类型。可以按如下方式实施 template<typename T, T val> func() { cout << val; } 模板 func(){cout主要取决于实际函数的解决方案是按如下方式定义它: template<typename T> constexpr void func(T val) { } template<auto va

假设我们想要编写一个函数,该函数应该获取一个值作为模板参数(比如说,出于效率原因),但我们事先不知道所需参数的类型。可以按如下方式实施

template<typename T, T val>
func() { cout << val; }
模板

func(){cout主要取决于实际函数的解决方案是按如下方式定义它:

template<typename T>
constexpr void func(T val) { }
template<auto value>
void func() {}
您可以这样做:

using IntS = S<int>;
// ....
IntS::func<5>();
使用IntS=S;
// ....
IntS::func();
在即将发布的C++17版本中,您将按照以下方式进行操作:

template<typename T>
constexpr void func(T val) { }
template<auto value>
void func() {}
模板
void func(){}

这可以被调用为
f()
,这就是您正在寻找的。

可能与
auto
类型一起工作。为什么不
template constepr void func(T val){}
并将其称为
f(5)
?你知道
模板
类型只能是简单类型,比如
int
bool
。例如,你不能用
双精度
,而不是
int
,对吧?所以我想知道这样做是否有用。那么
模板函数(std::integral\u常量){cout如何
template<auto value>
void func() {}