【问题标题】:Force the use of a default parameter [duplicate]强制使用默认参数[重复]
【发布时间】:2015-02-18 13:54:08
【问题描述】:

“简单”问题,是否可以在调用需要默认参数的函数时显式使用默认参数?类似的东西:

void function(int x, int y = 2, int z = 3)
{
      // prints x, y and z
}

function(10, default, 13); // won't compile of course
// would return x = 10, y = 2 and z = 3

谢谢

【问题讨论】:

  • 你不知道默认值吗?
  • @Axalo:是的,但是根据默认参数的全部目的,最好不要在调用点重复它们。
  • 我要第二个内森,这对我来说似乎是重复的。
  • @Axalo:如果我有,比如说,一个特定的 lambda 函数作为默认参数,我不想每次我想使用这个默认参数时都写它。我只是在寻找一种更方便的方法来做到这一点。

标签: c++ function default-parameters


【解决方案1】:

不适用于标准 C++,但您可以查看例如 boost parameter library.

小例子:

#include <iostream>
#include <boost/parameter.hpp>
#include <boost/parameter/preprocessor.hpp>

BOOST_PARAMETER_NAME(x)
BOOST_PARAMETER_NAME(y)
BOOST_PARAMETER_NAME(z)

namespace tag { struct x; }

BOOST_PARAMETER_FUNCTION(
      (void),
      function,
      tag,
      (required (x, (int)))
      (optional
       (y, (int), 2)
       (z, (int), 3)
      )
)
{
   std::cout << "Called with x = " << x << " y = "
   << y << " z = " << z << std::endl;
}

int main()
{
   function(1, _z = 5);
   function(1, _y = 8);
}

live example

【讨论】:

    【解决方案2】:

    不,目前在 C++ 中是不可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-02
      • 2012-06-22
      • 2023-03-27
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      相关资源
      最近更新 更多