【发布时间】:2018-08-08 21:07:06
【问题描述】:
是否可以使用 C++ 可变参数来定义一个完全允许以下调用的函数:
f(int, char)
f(int, char, char)
f(int, char, char, int)
f(int, char, char, int, char)
...
如果 n 是素数,则每个第 n 个参数都是 char,否则是 int。函数只能这样调用;它不能与其他参数模式一起编译(例如,f(2, 2) 是一个错误,但 f(2, '2') 是可以的)。
【问题讨论】:
-
请向我们展示您的尝试。解释一个可能的用例也可能不是一个坏主意。
-
您知道
f(int,char)可以被称为f(2,2)而不会出错,并且正在寻找一种方法使其成为错误,或者是否足以让签名正确? -
实际上,这没有用例。我只是想知道是否有可能;-) 感谢自动投射的提示;我不关心签名中使用的类型,而是更关心如何创建这种模式。
标签: c++ c++11 c++14 variadic-functions