使用函数模板

时间:2017-07-18 10:26:45

标签: c++ templates typename

如何在函数模板中返回变量的值,该模板可以接受每种类型?

例如,假设我有以下功能:

template<typename T>
size_t func(T const&) {
    return sizeof(T);
}

它可以接受任何类型,例如intunsigned intBSTRlong,并返回类型的大小。

但我喜欢得到任何类型的变量值,如:

template<typename T, valueof typename>
X func(T const&) {
    // << return valueof(T) OR return typeid(T).value OR WHATELSE??? >>
}

例如,当我像Hello World!一样使用它时,我需要在上面返回func<BSTR>("Hello World!")。当我像123456一样使用它时,我需要在上面返回func<int>(123456)

我已经知道如何使用typeid(T).name()获取变量类型的名称,但不知道如何获取具有T类型的变量的值。

提前致谢。

1 个答案:

答案 0 :(得分:2)

只需返回参数值:

template <typename T>
T func(const T& param) {
    return param;
}