-3
當編寫一個函數模板應該返回任何一個傳遞功能的回報 - 我怎樣才能避免該return
語句不能用函數返回void
使用的事實呢?避免特殊情況下`void`返回類型函
例子:
struct FunctionalVoid {
typedef void result_type;
result_type foo() const { return; }
};
struct FunctionalInt {
typedef int result_type;
result_type foo() const { return 42; }
};
template< class F >
typename F::result_type
g (const F & f) {
return f.foo();
}
現在我可以寫g (FunctionalInt {});
,但我不能寫g (FunctionalVoid {});
。如果不寫g
兩次,有沒有辦法解決這個問題?
(一個真正的g
會,當然是更復雜的功能。)
(編輯:愚蠢減少 - 成員函數調用foo
,而不是do
。)
你被允許從'void'函數返回一個'void'表達。你嘗試過什麼錯誤? (也許你可以發佈你實際測試過的代碼,沒有像試圖命名一個函數'do'的額外錯誤)。 – 2015-02-24 11:08:28
由此,jrok並不意味着您的5,000線項目。他的意思是你構建的MCVE來調試這個。它與上面的代碼非常相似,除了沒有被破壞,並且具有'main'功能。 – 2015-02-24 11:11:35
http://stackoverflow.com/q/20478193/560648 – 2015-02-24 11:18:33