这很难描述。我有一个类(Duo
)与两个模板模板参数。其中一个类是另一个类的参数,但它仍然没有完全定义,直到我们在Holder
中,然后我用只有Holder
知道的模板参数实例化Solid
。
template<class T>
struct Solid
{
T _t;
};
template<template<typename> class SE>
struct Holder
{
SE<int> _se;
};
template<template<typename> class HOLD,
template<typename> class S>
struct Duo
{
HOLD<S> _mem;
};
int main()
{
Duo<Holder, Solid> a;
return 0;
}
然而,我得到这个编译错误:
29 | HOLD<S> _mem;
| ^
main.cpp:29:14: note: expected a type, got ‘S’
有办法做到这一点吗?
HOLD
的参数必须是模板而不是类型:
template<
template<template <typename> class> class HOLD,
template<typename> class S
>
struct Duo