【发布时间】:2018-08-14 07:06:29
【问题描述】:
template<typename T> T f(T i) { return i+1; }
int f(int i) { return i-1; }
f(2);
这是未定义的行为(注意int f(int) 不是特化)?如果是,那么请指出标准在哪里进行这种情况。
【问题讨论】:
-
我认为你误解了 UB 是什么......
-
UB,你的意思是 ambiguous 吗?无论哪种方式,都没有。它不是 -
我所说的 UB 是指标准未定义的东西。 Ofc 如果以某种方式定义,我仍然愿意知道:)
-
@Criss 正确的说法是“未指定”。
-
这里是要阅读的部分:en.cppreference.com/w/cpp/language/overload_resolution "...在重载决议开始之前,通过名称查找和模板参数推导选择的函数组合起来形成候选函数集(确切的标准取决于发生重载决议的上下文,见下文)。...“并继续阅读。
标签: c++