以下语句是函数重载还是函数部分专用化
Is the following statement a function overload or a function partial specialization?
template <typename Function> void for_each_element(
const boost::tuples::null_type&, Function) {}
template <typename Tuple, typename Function> void
for_each_element(Tuple& t, Function func) {
func(t.get_head());
for_each_element(t.get_tail(),func);
}
给定上面的代码片段,我们是定义重载函数还是部分专用函数?
谢谢
没有函数部分专业化这样的东西。这是一种超载。
例如
template <typename T, typename U>
void foo(T t, U u);
template <typename T>
void foo<T, int>(T t, int u); // Illegal: no partial specialisation of functions
template <typename T>
void foo(T t, int u); // OK
将专业化与重载混合时要小心,因为它并不总是像您认为的那样工作。
重载。你不能部分地专门化函数,即使你可以,你也会有第二对<>
括号。
这是一个重载。 功能的部分专业化是不可能的。 如果您尝试部分专用化函数,编译器将抱怨。 在这种情况下,当您到达元组的末尾时,编译器将使用重载解析来选择第一个函数。
相关文章:
- 具有常量引用参数的函数模板专用化
- 特定类型的模板函数的专用化
- 如何减少函数模板专用化?
- GCC 7 中模板类的模板成员函数的专用化
- 类模板成员函数的专用化
- 类成员函数的函数模板专用化
- 使用类指针重载C++命名空间函数模板专用化替代方法?
- 类和成员函数模板专用化出错
- C++ 模板化基类的函数模板专用化
- C++函数模板专用化和重载
- 不同命名空间中函数的专用化
- 函数模板专用化生成链接错误
- 视图和跨步视图以及常量噩梦的函数模板专用化
- 函数模板专用化语法聚合模板化类型
- 澄清了使用 enable_if 的成员函数模板专用化
- 带有 clang 的 MacOSX 中的函数模板专用化
- 模板化函数模板专用化
- 在C++中创建成员函数模板专用化
- 如何声明模板的友元函数的专用化
- 如何使指针指向模板化成员函数的专用变体