class Copier{ };
template<class T>
class Destructor{ };
template<template<class T> class Abstractor>
class BuildFactory : public Abstractor<Copier>{ };
BuildFactory<Destructor> bd;
我不明白模板参数T
将被推导出来。我怀疑T
会被推导出来,Copier
但这只是我的想法,我无法解释。也许有人可以对此主题进行解释。
没有扣。让我们看一下T
存在的两个地方:
template<template<class T> class Abstractor>
class BuildFactory : public Abstractor<Copier>{ };
这就是说,这BuildFactory
是一个类模板,它本身需要一个类模板,将其称为Abstractor
。再次说明一下:Abstractor
是类模板,而不是实例化。因此,根本不会发生任何扣除。Abstractor<Copier>
命名时,该类具有显式参数Copier
。
该T
其实是没有必要的; 你可以这样写:
template<template<class> class Abstractor>
class BuildFactory : public Abstractor<Copier>{ };
现在查看其他代码:
template<class T>
class Destructor{ };
BuildFactory<Destructor> bd;
同样,您要传递模板Destructor
,而不是类Destructor<T>
。无需扣除。
此外,无论如何也无法为类模板推断出模板参数。:P
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句