c – Variadic模板最大功能故障
发布时间:2020-12-16 10:30:41 所属栏目:百科 来源:网络整理
导读:我正在尝试编写一个可变参数模板,用于查找任意数量的数字的最大值(这仅用于练习可变参数模板). 但是,我有点碰壁,无法理解为什么我当前的尝试根本不起作用,并在编译时因错误而失败: prog.cpp: In function 'A myMax(A,A,Args ...) [with A = int,Args = {}]'
我正在尝试编写一个可变参数模板,用于查找任意数量的数字的最大值(这仅用于练习可变参数模板).
但是,我有点碰壁,无法理解为什么我当前的尝试根本不起作用,并在编译时因错误而失败: prog.cpp: In function 'A myMax(A,A,Args ...) [with A = int,Args = {}]': prog.cpp:7:35: instantiated from 'A myMax(A,Args = {int}]' prog.cpp:22:26: instantiated from here prog.cpp:7:35: error: no matching function for call to 'myMax(int)' 我的代码如下: #include <iostream> template <typename A,typename ... Args> A myMax(A a,A b,Args ... args) { return myMax(myMax(a,b),args...); } template <typename A> A myMax(A a,A b) { if (a>b) return a; else return b; } int main() { std::cout<<myMax(1,5,2); } 谁能告诉我如何修复我的可变参数模板? 解决方法
只需定义一个重载,它在可变参数函数模板上面有两个参数:
template <typename A> A myMax(A a,A b) //this is an overload,not specialization { if (a>b) return a; else return b; } template <typename A,args...); } 现在它将工作:http://www.ideone.com/R9m61 重载应该在实例化时可见,这在可变参数函数模板中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读