Kno*_*abe 21 c++ templates overloading c++11
假设我有一个与原始指针一起使用的模板:
template<typename T>
void processPointer(T* ptr);
Run Code Online (Sandbox Code Playgroud)
我不希望用void*指针调用它.看来我有两个选择.我可以删除非模板重载:
void processPointer(void*) = delete;
Run Code Online (Sandbox Code Playgroud)
或者我可以删除模板实例化:
template<>
void processPointer<void>(void*) = delete;
Run Code Online (Sandbox Code Playgroud)
声明非模板过载更容易(没有尖角支架).是否有理由我更喜欢删除模板实例化?
我不认为有任何理由在这里进行模板化
事实上,通过删除非模板重载,您可能会摆脱一些我现在无法想到的边缘情况模糊调用,因为非模板优先于模板实例化。从而使这项工作在大多数情况下都能按预期进行。