协议缓冲区的proto2版本允许指定消息元素的默认值:
optional double scaling_factor = 3 [default = 1.0];
Run Code Online (Sandbox Code Playgroud)
为什么proto3中不再可能这样?我认为这是一个简洁的功能,可以在线上保存额外的字节,而无需编写任何包装代码.
我想要一个可以接受任意数量的in和out参数的函数:
template<typename... Inputs, typename... Outputs>
void foo(Inputs... inputs, Outputs*... outputs)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
示例调用:
uint32 o1 = 0;
double o2 = 0.0;
bool o3 = false;
foo(1, 2, &o1, &o2, &o3);
Run Code Online (Sandbox Code Playgroud)
但是,这不会编译,因为编译器会尝试将所有参数匹配到第二个参数包中。我希望它可以*用作指示将两个包装分开的地方。
任何提示如何解决?