#include <iostream>
using namespace std;
template <typename T = int>
struct Foo {
T t;
Foo() { cout << "Foo" << endl; }
};
template <typename T>
struct Baz {
T t;
Baz() { cout << "Baz" << endl; }
};
template <typename T>
struct Bar {
T t;
Bar() { cout << "Bar" << endl; }
};
template <template <typename X> class T>
struct Bar {
T data;
Bar() : data() { cout << "Bar" << endl; }
};
int main()
{
Bar<Foo<>> a;
Bar<Baz<float>> b;
Bar<int> c;
return 0;
}
我刚开始学习模板。我非常困惑模板模板参数。我知道你可以将模板作为参数传递。在我的 Bar 模板类中,当它接收到一个模板模板参数时,<typename X>
代表什么?typename X
是 class T
的模板参数吗?
template <template <typename X> class T>
struct Bar {
T data;
Bar() : data() { cout << "Bar" << endl; }
};
此外,在主函数中调用模板参数时,我得到了关于 Bar 没有默认构造函数的错误。为什么会这样呢?