c – Template Explicit Specialization和普通函数有什么区别?
template <class T> void max (T &a,T &b) {}//generic template #1 template<> void max(char &c,char &d) {} //template specializtion #2 void max (char &c,char &d) {}//ordinary function #3 1,2和3之间有什么区别? 解决方法
>是一个模板函数
>是以前的模板功能的总体专业化(不会超载!) >是功能的重载 这是C++ Coding Standards: 101 Rules,Guidelines,and Best Practices摘录:
本书建议您通过根据类模板实现功能模板来添加间接级别: #include <algorithm> template<typename T> struct max_implementation { T& operator() (T& a,T& b) { return std::max(a,b); } }; template<typename T> T& max(T& a,T& b) { return max_implementation<T>()(a,b); } 也可以看看: > Why Not Specialize Function Templates? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |