首页 > 解决方案 > C++ 默认参数乱序?

问题描述

假设我有:

void f(bool option1 = false, bool option2 =false, bool option3 = false) 
{
     ... 
}

我想打电话:

f(option2=true);

这在 C++ 中可能吗?

标签: c++

解决方案


无法按照您在 C++ 中建议的方式调用函数。您可以通过元编程模拟命名参数struct,也可以简单地将 a 传递给您的函数。例如

struct options
{
    bool option0{false};
    bool option1{false};
    bool option2{false};
}; 

void f(options opts = {});

C++11 用法:

options opts;
opts.option2 = true;
f(opts);

C++2a 用法:

f({.option2=true});

推荐阅读