根据教程,</p>
// Example 2: Explicit specialization
//
template<class T> // (a) a base template
void f( T ){;}
template<class T> // (b) a second base template, overloads (a)
void f( T* ){;} // (function templates can't be partially
// specialized; they overload instead)
template<> // (c) explicit specialization of (b)
void f<>(int*){;} // ===> Method one
我还使用 VS2010 SP1 测试了以下内容,没有任何警告。
template<> // (c) alternative
void f<int>(int*){;} // ==> Method two
问题> 根据 C++ 标准推荐哪种方式?方法一还是方法二?
如您所见,方法一和方法二的主要区别如下:
template<>
void f<>(int*){;} // ===> Method one
template<>
void f<int>(int*){;} // ===> Method two
^^^
根据教程,我们应该编写以下普通的旧函数:
void f(int*){;}
但这不是我要问的问题:)
谢谢