如何在c ++中设置模板函数的默认值?

时间:2015-08-06 04:58:33

标签: c++ templates

我想实现如下的模板功能。 ret 是在doSomething()之后设置的返回值。但是doSomething有时会返回false,所以我想将默认值设置为 ret 。如果 T 为int,则 ret 应为0,如果 T 为字符串,则 ret 应为空字符串。那么在这种情况下,我应该如何将默认值设置为 T

T getSomeData() {
  T ret;
  if(doSomething()) {
    ret = XXX(); // XXX is set correctly because I use other library..
  } else {
    ret = ??
  }
  return ret;
}

3 个答案:

答案 0 :(得分:2)

template<class T>
T getSomeData() {
  T ret = T();
  if(doSomething()) {
    ret = XXX();
  }
  return ret;
}

答案 1 :(得分:2)

缺乏其他理由,我倾向于写一些更像是:

template <class T>
T getSomeData() { 
    return doSomething() ? XXX() : T();
}

如果您愿意,可以改为使用if语句:

template <class T>
T getSomeData() { 
    if (doSomething())
        return XXX();
    return T();
}
但是,我并不认为定义局部变量只是为了保留返回值。

答案 2 :(得分:0)

您可以使用构造函数。

template<typename T>
T getSomeData() {
  T ret = T();
}