具有一个默认值的本地参数的函数

时间:2015-05-25 16:02:09

标签: c++ c++11

我正在尝试找到一种无错误编译的方法并执行以下操作:

template <class A>
void f(A a,A b=a){
//do something
}

但是当我调用像f<int>(3)这样的函数时,编译器告诉我局部变量a可能不会出现在上下文中。 我想这是因为编译器无法知道是否将值赋值给形式参数a,以便它可以使用b的值初始化形式参数a

我可以实现这样的功能吗?

1 个答案:

答案 0 :(得分:8)

您可以提供调用双参数版本的重载:

template <class A>
void f(A a, A b){
  //do something
}

template <class A>
void f(A a){
  f(a, a);
}