C++模板的模板参数

C++模板编程

示例:

首先假设我们要传递以下模板函数:

1 template<typename T>
2 constexpr T Max(T _a, T _b) {
3     return _a > _b ? _a : _b;
4 }

编写接收该函数的函数模板

1 template<typename T,typename Fun>
2 constexpr T Test(T _a, T _b, Fun _fun) {
3     return _fun(_a, _b);
4 }
5 
6 int main()
7 {
8     constexpr int s = Test(12, 13, Max<int>);
9 }

这个地方需要注意的是,Max只能作为函数参数进行传递,不能使用模板参数进行传递,因为Max是一个函数而非一个类型

类模板传递:

 1 template<typename T>
 2 struct MyStruct {
 3 
 4 };
 5 
 6 template<template<typename T> class _MyClass>
 7 constexpr auto Test(_MyClass<int> _s) {
 8     return _s;
 9 }
10 
11 int main()
12 {
13     Test(MyStruct<int>{});
14 }

类模板是一个类型,可以作为与其他基础类型一样传递方式传递,不过类模板的参数需要加入template<>声明

C++模板的模板参数

上一篇:maven打包springboot项目,配置文件外置


下一篇:数组方法indexOf