我想創建一個模板函數,該函數返回int
或std::vector<int>
,具體取決於模板參數。例如:如何根據模板參數返回不同類型
struct ReturnInt {};
struct ReturnVec {};
[...]
int num = func<ReturnInt>();
std::vector<int> nums = func<ReturnVec>();
我一直試圖天真地實施這個基礎上,我的經驗非常有限的TMP。我覺得它應該包含一些沿着顯式模板專業化,std::enable_if
,std::conditional
和/或SFINAE的行。但是我的編碼嘗試都不會編譯,更不用說在簡單的測試中運行了。
這種返回式切換如何實現?
編輯:正如在評論中指出的,這是我的實際問題的簡化。如果有幫助,我有一個接受模板參數的類。根據參數,我希望它的get()
方法返回單個對象/值或對象/值的標準容器。
爲什麼功能需要被命名爲相同的,如果他們不義性的基於參數之類的東西?將模板專業化視爲名稱的一部分似乎沒有必要。 –
這是我的實際問題的簡化。如果有幫助,我有一個接受模板參數的類。根據參數,我希望它的'get()'方法返回單個對象/值或標準的對象/值容器。 –
你看過模板專業嗎? –