我想知道是否有解決方案來指定一個模板,以便可以傳遞void
或任何其他類型。 以下是一個非常簡單的例子,如果TReturn
也是void
,它應該不做任何事情,只返回void
,或者返回函數的返回值(它也返回TReturn
,但有區別,它實際上是一個類型) 。C++ void或任何類型作爲模板參數
template <typename TReturn>
TReturn Foo(std::function<TReturn()> function)
{
if(std::is_same<TReturn, void>::value)
{
// I am not sure what to put here
return function();
}
TReturn returnValue = function();
// Do some stuff with the returnValue here
return returnValue;
}
現在顯然我做了錯誤,因爲函數不能返回兩種不同的類型。這就是爲什麼我問,有沒有人知道如何做到這一點?
任何幫助表示讚賞樂意
這裏錯誤的是你假設'TReturn'是默認的可構造的(哪個'void'不是)。否則,這對我來說似乎沒問題。 – davidhigh
另一個錯誤是,你試圖產生'返回空'而不是'返回' –
@ManishBaphna是的,我知道它的錯誤,這就是爲什麼我正在尋找一種方式,使非空''類型的聲明是真實的並找到另一個'空' –