如何只使用函数的一些可选参数

use*_*177 1 c++ function

有没有办法只使用函数的一些可选参数?所以如果我有这样的功能,

void f(int a = 0, int b = 1) {}
Run Code Online (Sandbox Code Playgroud)

我可以调用f()并只指定b并保留a其默认值吗?

And*_*dyG 6

我希望。C++ 缺少其他语言(如 C# 或 Python)中常见的这一特性。

现在,您要么非常聪明地设计参数的顺序,要么将参数重构为一个小结构:

struct f_args
{
   int a = 0;
   int b = 1;
};
Run Code Online (Sandbox Code Playgroud)

现在您可以随意设置您想要的任何内容:

void f(f_args args){/*...*/};

// ...
f_args args;
args.b = 2;
f(args);
Run Code Online (Sandbox Code Playgroud)

或者使用指定的初始值设定项(C++20):

f({.b=2});
Run Code Online (Sandbox Code Playgroud)

Boost 参数库尝试以更健壮的方式解决这个问题。