2017-07-18 74 views
1

如何在可以接受每种类型的函数模板中返回变量的值?使用函数模板返回类型为X的变量的值

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

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类型的变量的值。

在此先感谢。

+2

我也认为@ Ron的解决方案波纹管是你所需要的。如果不是,那么你的问题就严重不足。 – StoryTeller

+0

@StoryTeller未指定? – GTAVLover

+1

意思是你没有解释你想要什么。 “我希望''X'为'foo(X)'”成为一个明显的解决方案。 – StoryTeller

回答

2

只是返回参数的值:

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

谢谢,它的工作!我该怎么办?如果我想将上面的返回参数转换为只有一种类型'wstring'?我认为这是不可能的,因为通用转换不能从同一个函数完成,对吗? – GTAVLover

+2

@GTAVLover - ['std :: to_wstring'](http://en.cppreference.com/w/cpp/string/basic_string/to_wstring)? – StoryTeller

+0

是**任何类型**返回参数到'wstring'。因为我希望将来这个值可以在'VARIANT'中分配到正确的数据类型。 – GTAVLover

相关问题