如何在不重复前一个参数的情况下提供默认参数?

mih*_*kov -2 c++ parameters function named

我搜索了很多资源,在他们提供的示例中,它看起来像这样:

void bar(int a = 4, char b = 'A') 
{ 
}
Run Code Online (Sandbox Code Playgroud)

根据这个资源, 它可以被称为:

bar(b : 'Z');
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误identifier "b" is undefined.我正在使用Visual Studio 2015 Update 3 Enterprise.

任何建议如何只指定第二个参数?

Bau*_*gen 7

你链接的文件只是一个提案¹.您尝试使用的机制(当前)不是标准中定义的C++的一部分.因此,您不能指望编译器实现它.

目前还没有其他标准的解决方法.如果要设置某个参数,还需要在函数声明中提供其前面的所有参数.

您可以使用Boost参数之类的东西,或者自己实现类似的功能,以使用用户代码模拟该功能.这是否是一个好主意是辩论,它并不常见,因此可能会让其他程序员感到困惑.


¹这可能是一个语言问题:"提议"是某人所说的好事,而不是状态.