-设置参数X大小的默认initializer_list参数Y,其中X和Y是函数参数
c++: - setting default initializer_list argument Y of size argument X, where X and Y are function parameters
考虑以下代码
enum class VAR_CHANGE{TYPE1, TYPE2, TYP3};
void cell ( const std::initializer_list<double>& values,
const std::initializer_list<VAR_CHANGE>& change_type = [[[ !!!!!]]] )
{
// do something
}
我想替换[[[!!!!!][]]使得默认的初始化列表变成
{VAR_CHANGE::TYPE1, VAR_CHANGE::TYPE1, ....}
大小的values.size()
我想这样做,因为通常,我想选择enum类型VAR_CHANGE::TYPE1到初始化列表"值"中的所有值。例如:
cell({1.2, 2.2, 6.7});
实际上是
cell({1.2, 2.2, 6.7}, {VAR_CHANGE::TYPE1, VAR_CHANGE::TYPE1, VAR_CHANGE::TYPE1});
我可以重载这个函数,但想知道是否有一个很好的通用方法来把它表示为一个函数,而不是传递大小来做到这一点。
你可以使用这个hack:
enum class VAR_CHANGE{TYPE1, TYPE2, TYP3};
void cell ( const std::initializer_list<double>& values,
const std::initializer_list<VAR_CHANGE>& change_type = {} )
{
if(values.size() > 0 && change_type.size()==0)
{
// default
}
// do something
}
int main()
{
cell({12.4, 234.4});
cell({12.4, 234.4}, {VAR_CHANGE::TYPE1, VAR_CHANGE::TYPE2});;
}
或者做得更好!
相关文章:
- 如何使用 swig 修改类构造函数以保留对其中一个构造函数参数的引用?
- 具有多个参数的模板化类专用化,其中一个模板参数是模板本身
- 使用当前模板作为其中一个模板参数的模板参数
- 模板函数,其中一个参数需要专门化,而另一个不需要
- 构造函数模板参数推导,其中 std::function 作为参数
- 构造一个可变参数模板化类,其中参数在运行时已知
- 模板函数,其中模板参数类型取决于函数参数
- 组件X86转换为ARM功能呼叫,其中有不同数量的参数为ARM
- C :宏参数可以在其中有空间吗?
- 为什么我们可以创建一个模板类结构,其中包含许多与声明结构时指定的参数不同的参数
- 我如何将std ::数组作为模板参数传递,其中C 中的元素数量不同
- 将一个函数传递给另一个函数,其中参数的数量可以不同C++
- 可以将算术表达式作为参数传递给一个函数来描述其中的逻辑
- 如何使用递归按从 1 到 n 的升序打印数字,其中 n 在该函数的参数中给出
- 从 2D 数组中获取前一个数组,其中给定数组作为函数中的参数传递
- 重构,其中唯一函数具有不同的参数
- 我可以使用分配运算符构造,其中有超过1个参数
- 当函数有很多参数和客户端代码只需更改其中时,如何处理情况就可以处理
- 多维 std::intializer_list,其中维度数被指定为其类的模板参数
- 其中,在只有参数化构造函数的类中初始化的 VPTR(虚拟指针)