通过更改传递的值,是否有任何方法可以使用相同的模板类型而具有不同的代码?即:
templateclass container;
并container
生成不同的代码container
?
如果没有,有什么替代品吗?
是.这称为模板专业化.你可以写这样的代码:
templateclass container { /* Implementation for true */ }; template <> class container { /* Implementation for false */ };
现在,如果您实例化container
,它将选择最高版本,因为底部版本不适用.如果您实例化container
,那么将选择底部版本,因为两个版本都适用,但底部更专业.
这里的实现可以完全不同.没有要求他们有任何共同点.这通常用于实现编译时计算.查找模板元编程以获取更多信息.