c++ 嵌套模版
参考博客:https://learn.microsoft.com/zh-cn/cpp/cpp/templates-cpp?view=msvc-170
模板作为模板参数 模板可以是模板参数。 在此示例中,MyClass2 有两个模板参数:类型名称参数 T 和模板参数 Arr:
C++
template<typename T, template<typename U, int I> class Arr>
class MyClass2
{
T t; //OK
Arr<T, 10> a;
U u; //Error. U not in scope
};
由于 Arr 参数本身没有正文,因此不需要其参数名称。 事实上,从 MyClass2 的正文中引用 Arr 的类型名称或类参数名称是错误的。 因此,可以省略 Arr 的类型参数名称,如以下示例所示:
C++
template<typename T, template<typename, int> class Arr>
class MyClass2
{
T t; //OK
Arr<T, 10> a;
};
啊?真的有人写这种代码???
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
template<class T>
class Stu {
public:
Stu(T v) : value(v) {}
T value;
string str() { return to_string(value); }
};
template <typename T1, template<typename> class S>
void show(T1 t1, S<T1> s1) {
cout<<t1<<endl;
cout<<s1.str()<<endl;
}
int main() {
show(10, Stu<int>(99));
return 0;
}