我有很長的模板函數聲明:我可以使用decltype()來避免顯式模板實例中的代碼重複嗎?
template <typename T> void foo(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop);
,沒有超載。我想明確地實例化它。我可以寫(說了T
= int
):
template void foo<int>(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop);
但我真的不希望複製長的聲明。我本來喜歡能夠這樣說:
template <typename T> using bar = decltype(foo<T>);
然後:
template bar<int>;
現在,第一行編譯(GCC 4.9.3),但第二行沒有按」噸。我可以讓它工作嗎?或者我可以使用decltype()
其他方式避免複製實例的聲明?
注意:我使用了一個例子,在這個例子中,你不能只從參數中推斷出類型,因爲我想要任何解決方案來支持這種情況。
我在編輯這個問題,以確保你不能推導出函數參數的模板參數,這正是我真正感興趣的。我只是撒了一個T t來衡量好,並不意味着爲你使用它...如果你的答案仍然相關,那麼很好。 – einpoklum
@einpoklum這個問題並不是很清楚,你爲什麼認爲我的答案不相關? – Barry
我沒有說這是無關緊要的,我只是有一種感覺(在你最後一次編輯之前),你可能比你更依賴它。 – einpoklum