c – 什么时候删除模板实例化优于删除非模板超载?

假设我有一个可以使用原始指针的模板:

template<typename T>
void processPointer(T* ptr);

我不希望这个被void *指针调用。看来我有两个选择。我可以删除非模板超载:

void processPointer(void*) = delete;

或者我可以删除一个模板实例化:

template<>
void processPointer<void>(void*) = delete;

声明非模板重载更容易(没有尖括号)。是否有理由为什么我更愿意删除模板实例化?

Here’s one reason喜欢模板版本:processPointer< void>(void *)仍然可以直接调用,避免了其他的重载。
http://stackoverflow.com/questions/21028144/when-is-deleting-a-template-instantiation-preferable-to-deleting-a-non-template

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 什么时候删除模板实例化优于删除非模板超载?