2017-07-18 11 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

相關問題