功能模板专业化语法

时间:2014-01-08 22:46:02

标签: c++ templates

鉴于此功能模板:

template<typename A> void func (A param) {...}

为了编写专业化,我们可以使用这个习语(A)

template<> void func<> (int param) {...}

或者这一个(B)

template<> void func<int> (int param) {..}

A和B之间有什么区别吗?如果两者都相同,那么首选语法是什么?为什么?

1 个答案:

答案 0 :(得分:3)

A。)template<> void func<> (int param) {...}

B。)template<> void func<int> (int param) {..}

A和B之间有什么区别吗?

从技术上讲,B有明确指定的模板参数,而A的参数减少了,但对用户而言,它只是你展示函数的方式。

如果两者相同,那么首选语法是什么?为什么?

由于定义两者都会导致多重定义错误(即它们是相同的功能),因此,如何呈现该功能真的取决于个人偏好。

我个人偏爱B,因为它完全定义并清楚地表明了功能的意图,但这又是我的个人偏好

希望可以提供帮助