草庐IT

c++ - 解决此模板分辨率歧义的正确方法是什么?

假设我写了:template::value>>voidfoo(){std::coutvoidfoo(){std::cout();}当我编译这个时,我得到一个关于调用歧义的错误(如果我用float替换short则没有错误)。我应该如何修复此代码,以便获得整数类型的较高版本和较低版本?如果您的建议适用于foo()的多个专用版本以及通用版本,则可加分。 最佳答案 我喜欢Xeo'sapproach对于这个问题。让我们做一些带有后备的标签调度。创建一个从自身向下继承的选择器结构:templatestructchoice:choice{};te