【发布时间】:2020-09-18 09:09:22
【问题描述】:
我有一个带有 2 个重载参数的函数
template<typename... Args>
void f(Args&&...) {
cout << "Args..." << endl;
}
void f(...) {
cout << "..." << endl;
}
有人能解释一下查找是如何工作的吗?在我看来,每个函数的目的都是一样的(除了第一个是 c++ 风格,第二个是 c 风格)。当我调用带有参数的函数时,尽管它们的类型为f(5, "hello") 或f(5, 10),它始终是可变参数模板(第一次重载),但是当我调用不带参数的函数f() 时,它始终是可变参数函数(第二次重载)。编译器是否有严格的规则来选择正确的函数,其背后的逻辑是什么?
【问题讨论】:
-
我似乎记得有一个固定的规则,始终将可变参数放在堆的底部。
标签: c++