模板功能
谁能描述以下声明?
template<> float func<float>(char *txt)
{
blah blah
}
第二个<>是什么?为了?
Can anyone describe the following declaration?
template<> float func<float>(char *txt)
{
blah blah
}
What is the second <> for?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
template<>
表示此函数是模板特化。第二个
表示这是float
的特化。例如:
The
template<>
means that this function is a template specialization. The second<float>
means that this is the specialization forfloat
.For example:
这是一个专门的模板函数。当您尝试专门化通用模板函数时,就会发生这种情况。
通常你会遇到另一个减速,因为
有时你想为特定类型 T 做一个专门的声明。在前面的例子中,如果 T 是 bool 类型,你可能想要改变 vars 数组的行为以节省一些空间(因为每个 bool条目可能仍需要 32 位)。
通过定义专门的版本,您可以按位操作 vars 数组
方式。
This is a specialized template function. It happens when you try to specialized a generic template function.
Usually you will have another deceleration as
It happens sometime you want to do a specialized declaration for certain type T. In previous example, if T is bool type, you might want to change the behavior of vars array to save some space (because each bool entry might still take 32bits).
By defining a specialized version, you are allowed to manipulate the vars array in bit-wise
manner.