c++ - C++ 模板特化和子类化
问题描述
我想知道是否可以让模板专业化接受一个类及其子类。像这样:
class A {};
class B : public A {};
template <typename T>
void foo(const T& t) {
printf("T");
}
template <>
void foo(const A& t) {
printf("A");
}
int main(int argc, char** argv) {
B b;
foo(b);
return 0;
}
目前它输出'T',因为b
没有自己的模板特化,所以它默认打印'T'。我想知道是否可以B
使用模板专业化,A
因为B
它是A
. 或者那不是一回事?
注意:由于某些要求,我不能使用复制/移动。
注意:如果我不需要更改A
or B
,我也更喜欢,但让我们先看看有什么可能。
解决方案
推荐阅读
- javascript - ngForm 变量在组件中未定义
- python - 如何使用 python 编辑保存在 Elasticsearch 中的文档
- scala - 组合 2 KeyValueGroupedDatasets
- cypress - 使用测试运行程序在本地运行时在仪表板中记录测试结果
- python - 解开一个 numpy mgrid
- python - 无法在树莓派 yocto 构建中导入 python tty 模块
- jquery - 如何在这里修复画廊?
- flutter - 覆盖页面浏览控制器的 CustomPainter 画布
- operating-system - printf, scnaf,,(stdio.h中的I/O函数)可以调用API吗?
- javascript - 将动态加载的模型移动到查看器中