我在stackoverflow上搜索了一段時間,但是我不明白模板足以找到解決方案,或者它根本沒有被回答過。要求函數模板的返回類型是模板的專門化
在這個例子中:
template <typename T> T f();
是否有可能使功能需要類型T是std::basic_string
模板的一個特例?
我可以將模板和T定義爲std::basic_string
的類型,所以(使用std::basic_string<T>
內部,當然):
template <typename T> std::basic_string<T> f();
但我不能夠通過std::string
或std::wstring
到函數(期望返回類型分別爲std::string
和std::wstring
),這是這裏的真正目標(能夠傳遞來自std::basic_string
模板的任何類型)。
@ splash請指出您是指「派生自」還是「專業化」。在你原來的帖子中你說過「源自」。 Potatoswatter將其標題改爲「專業化」,但只留下了主要內容。你的真實意圖是什麼?請修復你的問題。你最後一段對我來說就像「我不能傳遞std :: string,因爲它看起來像'std :: basic_string'。」。它不一定跟隨你的正文,你的意思是什麼。 –
2010-09-17 11:01:16
如果我理解術語,我會用'專業化'。你甚至可以從模板類派生嗎? – komiga 2010-09-17 12:00:53
@ splash謝謝,現在很清楚。同理,我會解釋「derived from basic_string」,因爲這個類來自'basic_string'。所以從某種意義上說,它是不明確的:) –
2010-09-17 12:09:53