如何在模板函数中创建类型的实例? (C ++)

时间:2010-11-12 09:55:03

标签: c++ templates default

我需要一个模板函数,它为传递的参数

分配一个默认值
template <class T> inline T GetDefault()
{
    return ???? # default value
}

T可以boolintdoublestring

谢谢。

3 个答案:

答案 0 :(得分:8)

默认值(即使是基本类型)应该是默认的“构造函数”:

template <class T> inline void SetDefault( T& value )
{
    value = T();
}

例如,基于int的类型默认为0(因为显式初始化)。

这显然不适用于没有默认值的类型,比如没有默认构造函数的类的对象。

答案 1 :(得分:7)

您可以使用return T();

请注意,这也可用于为模板类型的参数提供默认值:

template<class T>
void foo(const T &t, const T &tWithDefaultValue = T())
{
  /* ... */
}

答案 2 :(得分:5)

template <class T> inline T GetDefault() 
{ 
    return T();
}