他們告訴我使用模板來查找總和。爲什麼這不起作用?謝謝。這個模板代碼爲什麼不起作用?
template <typename A, typename B, typename C>
auto add(A a, B b, C c = a + b) -> decltype(c) {
return c;
}
我以爲C++ 11說你可以在聲明後使用參數。那麼爲什麼不這樣做呢?
他們告訴我使用模板來查找總和。爲什麼這不起作用?謝謝。這個模板代碼爲什麼不起作用?
template <typename A, typename B, typename C>
auto add(A a, B b, C c = a + b) -> decltype(c) {
return c;
}
我以爲C++ 11說你可以在聲明後使用參數。那麼爲什麼不這樣做呢?
您不能使用參數作爲默認值。此外,模板類型扣除不會這樣工作。
只要寫這樣的:
template <typename A, typename B>
auto add(A a, B b) -> decltype(a + b) {
return a + b;
}
並希望C++得到很快返回類型推演。
我是否總是必須使用decltype,我在哪裏自動執行函數? –
decltype(a + c)中的'c'是否是一個錯字? –
@David,只有當你無法預測表達式的結果類型時,就像涉及模板參數的表達式那樣。你不可能知道這些參數是'float','int's,兩者的混合還是其他。 – jweyrich
你怎麼稱呼它? – billz
@billz'add(5,5)' –