我是 C++ 的初学者,并使用“C++ Primer Plus”这本书来自学这门语言,并在编程中变得更加自如。
我在书中做了一些与功能模板主题相关的练习,我有两个问题。
我不明白为什么以下明确的专业化不起作用:
template <typename T>
T lesser(T a, T b)
{
return a > b ? a : b;
}
template <>
box lesser<box>(box& a, box& b)
{
return a.volume > b.volume? a : b;
}
假设我有一个 box 类型的结构,为什么不能将类型专门化为键入“box&”而键入“box”?第二个声明的意思是“不要使用 lesser() 模板来生成函数定义。而是使用单独的专用函数”。而且,我不能使用 type box&,只能使用 box。这是为什么?
编辑:好的,第二个问题本身就消失了。