【发布时间】:2020-10-14 15:39:52
【问题描述】:
我可以找到一些示例,说明如何使用一种重复的类型(如 StringFormat())编写可变参数函数,但我需要编写一个让两种不同类型交替重复的例子。
用法需要如下所示:
MyFunc(stringVar, intVar1, doubleVar1);
MyFunc(stringVar, intVar1, doubleVar1, intVar2, doubleVar2, intVar3, doubleVar3, intVar4, doubleVar4);
函数总是有一个字符串输入和一个 int 和一个 double 的最小值,但是 int 和 double 会一起重复。
如果可能的话,我还需要一种方法让文档告诉您您使用的是哪种 arg 类型。也许文档会自动生成并且可以正常工作,但是以防万一您需要做一些特殊的事情,请也包括在内,或者如果无法进行智能感知工作,请告诉我。可能是这样的:???
/// <summary>
/// MyFunc Summary
/// </summary>
/// <param name="name">Name description</param>
/// <param name="event1_id">ID for Event 1</param>
/// <param name="event1_value">Value for Event 1</param>
/// ...
/// <param name="eventN_id">ID for Event N</param>
/// <param name="eventN_value">Value for Event N</param>
/// <returns>return description</returns>
【问题讨论】:
-
更简单的方法是使用 pair/struct 来分组 ID 和值。然后可能是
vector/initializer_list。 -
智能感知不处理 SFINAE,因此硬编码重载可能是文档/智能感知的一个选项。然后您仍然可以转发到可变参数解决方案。
-
我不清楚你在问什么。你能展示这个函数的示例实现吗?另外,您所说的“让文档告诉您您使用的是哪种 arg 类型。” 是什么意思?
标签: c++ variadic-templates variadic-functions