variadic形式对单个参数的非variadic形式是模棱两可的
variadic form is ambiguous with the nonvariadic form for a single argument
为什么在以下代码编译器中不因为歧义而抱怨?
template <typename T>
void print (const T& arg)
{
std::cout << arg << std::endl;
}
template <typename T, typename... Types>
void print (const T& firstArg, const Types&... args)
{
std::cout << firstArg << std::endl; // print first argument
print(args...); // call print() for remaining arguments
}
这是因为超负荷分辨率始终偏爱非variadic函数的形式,而不是variadic。
C 11标准坚持。
相关文章:
- Variadic模板未编译
- variadic模板中的模板参数推导失败
- "Inverse SFINAE"避免模棱两可的过载
- 操作员C++的模棱两可的过载
- 模棱两可的重载模板
- [temp.variadic]中关于包扩展实例化的措辞
- 调用重载的"<大括号括起来的初始值设定项列表>"对于对来说就足够了是模棱两可的
- 模棱两可的 != reverse_iterator运算符
- SFINAE不能防止模棱两可的操作员过载吗?
- VSCode 说 std::chrono 是模棱两可的,如果运算符<<重载
- 为什么对模板的调用不模棱两可?
- 修复重载运算符的使用'+'模棱两可?
- 为什么同时覆盖全局新运算符和特定于类的运算符不是模棱两可的行为?
- Antlr4 C++访问模棱两可的分支
- 模棱两可的调用 - 模板化函数
- std::绑定variadic模板和自动返回类型
- is_same和variadic模板编译时错误无效转换
- 限制variadic模板类中的构造函数访问
- 在SESHAT中,对"元组"的引用是模棱两可的
- variadic形式对单个参数的非variadic形式是模棱两可的