|
|
1
2
我对这个问题最初的回答很有启发,但现在有了一些改进。
这不需要“假定”第二个参数是const char*。 |
|
|
2
3
打电话的人要当心。如果您的函数被记录为采用printf样式的格式字符串,那么调用者有责任转义任何百分号。尝试处理无效的格式字符串并不是您的工作。
我认为你最好还是和C++的人相处。在Java方法中,通常检查有效参数并在传递无效值时抛出异常。在C++中,你只需让打电话的人在脚上开枪。最好让他们写下来
|
|
|
3
2
在C++ 11中,可以使用具有单个特例情况的显式专门化的可变模板:
然后:
|
|
|
4
1
好吧,我想我想出了这个问题的解决办法。 事实是你 不能 仅根据椭圆是否有参数进行重载。也就是说,不能有只有椭圆存在时才会变化的签名的函数。
然而,它
是
可以做一些像我问的如果我放弃
是不含糊的,但现在您必须假设第一个参数是
不幸的是,这似乎是一个可能的解决方案的范围,它允许您将va_参数传递给子函数,在我的示例中是
接受我自己的答案可能是不好的形式,即使是回答所提问题的答案。 |
|
|
Gabe Tucker · 无法在golang中分配接口对象指针 3 年前 |
|
|
Jonas Verhellen · 使用可变模板作为属性 8 年前 |
|
|
JohnTravolski · N维向量的递归变量模板函数 8 年前 |
|
|
prestokeys · 带有默认模板参数的参数包 10 年前 |