小编Dan*_*uli的帖子

为什么proto3中没有自定义默认值?

协议缓冲区的proto2版本允许指定消息元素的默认值:

optional double scaling_factor = 3 [default = 1.0];
Run Code Online (Sandbox Code Playgroud)

为什么proto3中不再可能这样?我认为这是一个简洁的功能,可以在线上保存额外的字节,而无需编写任何包装代码.

protocol-buffers proto3

39
推荐指数
2
解决办法
2万
查看次数

如何为输入和输出参数使用单独的参数包?

我想要一个可以接受任意数量的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)

但是,这不会编译,因为编译器会尝试将所有参数匹配到第二个参数包中。我希望它可以*用作指示将两个包装分开的地方。

任何提示如何解决?

c++ templates variadic-templates

3
推荐指数
1
解决办法
71
查看次数