函数模板专业化语法
Function Template Specialization Syntax
给定此函数模板:
template<typename A> void func (A param) {...}
为了写一篇专业文章,我们可以使用这个成语(A)
template<> void func<> (int param) {...}
或者这个(B)
template<> void func<int> (int param) {..}
A和B之间有什么区别吗?如果两者相同,首选语法是什么?为什么?
A.)template<> void func<> (int param) {...}
B.)template<> void func<int> (int param) {..}
A和b之间有什么区别吗
从技术上讲,B明确指定了模板参数,而A减少了其参数,但对用户来说,这只是你展示函数的方式。
如果两者相同,首选语法是什么?为什么
由于定义两者会导致多重定义错误(即它们是同一个函数),因此如何呈现函数实际上取决于个人偏好。
我个人偏爱B,因为它完全定义并明确说明了功能的意图,但这也是我个人偏好
希望能帮助
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 如何使用默认参数等选择模板专业化
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 模板化建造师专业化
- 类模板的成员功能的定义在单独的TU中完全专业化
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 部分专业化和嵌套模板
- 模板专业化可以进入我的.cpp吗?
- 单独定义模板化嵌套类方法的正确语法
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 函数模板专业化语法
- 为什么显式专业化和部分专业化之间的语法差异