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