C++模板匹配优先问题
如图:
我觉得这个设计不太合理,
const形参一层意义是函数表明自己不会通过指针修改,可是这里设计者似乎认为非const指针转换为const会有一定的代价,导致上面的匹配,指针版劣于非指针版。
我希望所有的指针,都匹配到输出指针的那个实例,其他的匹配另一个实例。
可是有两个要求:
1因为做成库提供使用,不能要求调用者显示实例化,像这样调用:fun<int>(&x);//将匹配到指针版本
2上面图中例子,如果去掉模板中的const,似乎可以达到目的,使第二个调用匹配到指针版本,但是就不能用于const指针了。可以提供一个const指针版,一个非const指针版,但是我不想这么做,这样会增加模板带来的自动生成的代码量。
有没有科学一点的方法?

我觉得这个设计不太合理,
const形参一层意义是函数表明自己不会通过指针修改,可是这里设计者似乎认为非const指针转换为const会有一定的代价,导致上面的匹配,指针版劣于非指针版。
我希望所有的指针,都匹配到输出指针的那个实例,其他的匹配另一个实例。
可是有两个要求:
1因为做成库提供使用,不能要求调用者显示实例化,像这样调用:fun<int>(&x);//将匹配到指针版本
2上面图中例子,如果去掉模板中的const,似乎可以达到目的,使第二个调用匹配到指针版本,但是就不能用于const指针了。可以提供一个const指针版,一个非const指针版,但是我不想这么做,这样会增加模板带来的自动生成的代码量。
有没有科学一点的方法?
...全文
相关推荐
C++11可变参数模板[代码]
C++11引入了可变参数模板,允许模板定义中包含0到任意个模板参数,极大地增强了模板的灵活性。文章详细介绍了可变参数模板的声明方式、函数模板中的递归使用、类模板中的递归继承和复合实现,以及标准库中tuple类的简化操作。通过示例代码展示了可变参数模板在实际编程中的应用,如递归打印参数、实现多参数max函数以及tuple类的内存分布和访问方式。此外,文章还探讨了模板函数特化与泛化的优先级问题,为读者提供了深入理解C++11可变参数模板的实用指南。
黑白棋_rockyzk2_Vc_
Visual C++数字图像模式识别技术黑白棋源码
基于C++-OpenCV的小猿口算自动图像识别+答题.zip
OpenCV图像识别实战项目
jubilant-disco:可以在“ Wall's Wally”难题中找到Wally的程序。 使用C ++和面向对象的编程原理创建
沃利·普雷格拉 可以在“ Wall's Wally”难题中找到Wally的程序。 使用C ++和面向对象的编程原理创建
Autodesk(欧特克)笔试面试资料汇总
AUTODESK的面试题在网上是闹的沸沸扬扬,作为一个名企,这是可以理解的,况且其面试题质量也是不错的。抽一些闲暇时间,把网上传的比较多的70道题简单的解答了一遍,不为别的,只为再熟悉一下在大学学过的一些基础知识。希望对大家有用。


