1
2
我对这个问题最初的回答很有启发,但现在有了一些改进。
这不需要“假定”第二个参数是const char*。 |
2
3
打电话的人要当心。如果您的函数被记录为采用printf样式的格式字符串,那么调用者有责任转义任何百分号。尝试处理无效的格式字符串并不是您的工作。
我认为你最好还是和C++的人相处。在Java方法中,通常检查有效参数并在传递无效值时抛出异常。在C++中,你只需让打电话的人在脚上开枪。最好让他们写下来
|
3
2
在C++ 11中,可以使用具有单个特例情况的显式专门化的可变模板:
然后:
|
4
1
好吧,我想我想出了这个问题的解决办法。 事实是你 不能 仅根据椭圆是否有参数进行重载。也就是说,不能有只有椭圆存在时才会变化的签名的函数。
然而,它
是
可以做一些像我问的如果我放弃
是不含糊的,但现在您必须假设第一个参数是
不幸的是,这似乎是一个可能的解决方案的范围,它允许您将va_参数传递给子函数,在我的示例中是
接受我自己的答案可能是不好的形式,即使是回答所提问题的答案。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |