我想知道是否可以让模板专门化接受一个类及其子类。像这样:
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;
}
Run Code Online (Sandbox Code Playgroud)
当前它输出“ T”是因为b
没有自己的模板特化功能,因此它默认打印为“ T”。我想知道是否可以B
使用的模板专门化,A
因为B
是的子类A
。还是那不是一回事?
注意:由于某些要求,我无法使用复制/移动。
注意:如果我不需要更改A
或B
,我也希望它先让我们看看有什么可能。
我当前正在绘制 SVG,并且想要一个包含小于符号的文本元素。当我尝试时:
<svg xmlns="http://www.w3.org/2000/svg">
<text x="40" y="40" fill="Black" font-size="25" font-weight="bold" font-family="courier new" ><</text>
</svg>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:“StartTag:无效的元素名称”