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);
}
Run Code Online (Sandbox Code Playgroud)
鉴于上面的代码片段,我们是否定义了重载函数或部分专用函数?
谢谢
没有函数部分特化这样的东西.这是一个过载.
例如
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
Run Code Online (Sandbox Code Playgroud)
将特殊化与重载混合时要小心,因为它并不总是像您认为的那样工作.