我有一個(lambda)函數,並且有很多函數作爲可變參數包傳入第三個函數。簽名看起來像使用可變參數模板中的一組函數調用函數
template<typename F, typename... G>
ret_t call(F&& func, G&&... getters);
和F
將有多達參數給出的getters
數量。
現在我需要撥打func
,返回值爲getter
,這個值被稱爲硬編碼(constexpr)常數,否則確定。所以untemplated代碼可能看起來像
{
return func(getters_1(0), getters_2(0), getters_3(0) /* , ... */);
}
我當然想與自動化模板元編程的過程。
我想避免一個臨時數組或任何中間容器。 (這不是針對泛型,我知道getter的返回類型。)我希望它儘可能直接傳遞給函數,以便優化和避免內存浪費。
我可以包裹f控制拉姆達封閉的多層次,每包一個參數給它,並希望最好由編譯器,但反正我所要求的更好和更清晰的方式來做到這一點。
C++ 11,C++ 14或C++ 17? – max66
@ max66,我用g ++ 7.2 so C++ 17。 – YiFei
@YiFei總是不變的? – Rakete1111