C++ 推导模板参数';s模板参数
有一个类templateC++ 推导模板参数';s模板参数,c++,templates,C++,Templates,有一个类templatea,它将template类作为其模板参数 template <typename T> class A {} template <typename T> class B {} int main() { A<B<int>>(); return 0; } 您所描述的是一个模板: template< template<typename> class T > class A {}; temp
a
,它将template类作为其模板参数
template <typename T> class A {}
template <typename T> class B {}
int main()
{
A<B<int>>();
return 0;
}
您所描述的是一个模板:
template< template<typename> class T > class A {};
template <template <typename> class T, typename Inner>
class A<T<Inner>> {};
templateclass A{};
注意T前面的类必须是class,而不是typename。您可以将
A
作为模板:
template< template<typename> class T > class A {};
template <template <typename> class T, typename Inner>
class A<T<Inner>> {};
模板
A类{};
模板结构内部{};
模板
结构内部{
使用类型=T;
};
模板
使用internal\u t=typename internal::type;
如果存在,则
internal\u t
是X
的第一个模板参数,否则替换失败。请参阅模板模板参数语法:您需要将a
作为模板模板。internal\u t
是X
的唯一模板参数。您需要模板结构内部{using type=T;}
返回第一个参数。@Casey已修复。也不适用于非类型模板参数(即使它们不是第一个)。C++17修复了这一点,因此typename
现在也可以工作,最后。C++17修复了只有class
在template
之后工作的事实,因此typename
现在也可以工作,最后。