默认参数 v 模板重载解析中的优先级
Default argument v templates priority in overload resolution
如果我有一个类似于
template<typename T> void f(T&& t, int x = 1);
void f(int x = 0);
如果我使用整数参数调用f
,将优先调用其中的哪一个?例如
f(5);
void f(int x = 0);
将被调用。在重载解析期间,当参数类型完全匹配(即不需要转换(时,非模板始终优先于模板 – 请参阅 §13.3.3/1。
(请注意,如果非模板重载改为void f(long x = 0);
并且调用站点保持不变,或者如果重载保持不变但调用站点改为f(5L);
,则将调用模板重载。
相关文章:
- 继承函数的重载解析
- 你能重载对象变量名本身返回的内容吗
- 从父命名空间重载类型
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么在优先级队列中使用容器参数进行重载?
- 好友与成员运算符重载的优先级
- 函数重载优先级(引用)
- 函数重载和模板扣除优先级
- 优先级队列中的运算符重载或比较功能C++
- 运算符重载,成员函数和非成员函数,哪一个具有优先级
- 如何在重载函数时赋予数据类型优先级
- 优先级队列的重载运算符
- 具有相同名称的不同函数模板之间的重载优先级
- 默认参数 v 模板重载解析中的优先级
- 是否有任何语言允许重载运算符优先级
- 了解具有最小stl优先级_queue的运算符()重载
- 手动确定重载函数的优先级
- STL优先级队列和指针重载
- 重载运算符<用于优先级队列
- C++函数重载优先级