variadic-templates

    1熱度

    1回答

    (不知怎的,與此相關的以前question) 組可變參數模板包擴我想的N參數組,以評估模板函數的參數。事情是這樣的: template <size_t N, typename ... Ts> void evaluate(Ts const & ... fn) { for(int i=0; i<2; i++) runH<N>::func(i, fn...); } int

    1熱度

    2回答

    我的函數使用一組給定的輸入參數(variadic)調用一個Python函數,並返回一個包含該函數輸出的變量(可變參數,因爲輸出因函數調用而變化)。 我正在使用C++ 11通過MinGW-w64編譯器的g ++端口編譯Windows 10機器。我宣佈這個模板可變參數函數(並調用它),如下所示: // Declaration (in PyInterface.h) template <typename

    1熱度

    2回答

    我有一個類可以接收相同類型的可變參數模板。每種類型有一個嵌套的值,它應該是唯一的: template <SomeEnum _se, int _val> struct Pack { enum {val_se = _se}; enum {val = _val}; }; int main() { TypeMe<Pack<A_SE, 1>, Pack<B_SE,

    1熱度

    1回答

    我正在嘗試創建一個實用程序類,它將調用列表中所有類的特定函數。這背後的目的是自動化類層次結構中的反射元素。 我正在使用Visual Studio 2015來編譯一些C++代碼,並且當遞歸模板函數展開時由於編譯器在區分遞歸函數和終止函數時出現問題而出現編譯錯誤。 我提煉出來的類的核心,一個簡單的測試用例: #include <iostream> template< typename ... Ba

    4熱度

    2回答

    我卡具有以下問題: 鑑於Node<>類型的非終端節點和任意的類型,如A,B等的終端節點所表示的樹(見下文)。 因爲我不想使用運行時多態性我喜歡通過像在下面的例子中立即調用lambda表達式一個constexpr功能樹轉換成std::tuple。 struct A {}; struct B {}; struct C {}; struct D {}; struct E {}; templa

    0熱度

    3回答

    我寫了一個可變參數模板,它正在執行一個函子F 正好N次並累計結果。現在我想知道如何使這個模板能夠處理目前名爲id和所需功能x, y, z的可變數量的索引(模板)參數。 我想到的是一個像下面這樣的函子,它被執行,就好像你稱它爲三個循環一樣。我也懷疑它是否可以通過參數列表來解決。 struct 3DFunctor { template <int x, int y, int z> s

    3熱度

    2回答

    我有一個類Foo需要有可變數量的模板參數,但這些參數需要是某種泛型類型,而不是完全任意的。例如 template < int I, typename T> struct Arg; using type1 = Foo<Arg<3, double>>; using type2 = Foo<Arg<1, int>, Arg<7, float>, Arg<1, int>>; 我想知道什麼是最好的方

    2熱度

    3回答

    我有一個函數foo,它調用函數bar,並傳入foo的可變參數模板的子類型。例如: template <typename... T> void foo() { // ... template <size_t start_idx, typename... T> using param_pack = /*Parameter pack with T[start_idx]..

    1熱度

    1回答

    在試圖更好地理解可變參數模板時,我自己根據給定的條件(在<type_traits>中定義的選擇)編寫編譯時類型選擇器的任務,例如std::is_signed,std::is_floating_point等)。選擇器應該選擇符合指定爲模板參數的條件的第一個類型。 給你舉個例子: template<template<typename> class Cond, typename... T> struc

    1熱度

    2回答

    我不確定標準允許我嘗試什麼,甚至可能沒有意義,所以通過一切手段隨時糾正我。 我試圖將一個可變數量的std::function對象傳遞給接受可變參數的函數,並接受可變參數模板參數。模板參數指定返回類型中進行傳遞的功能函數的簽名看起來像這樣: template <typename ... TRets> void DoStuff(std::function<TRets...()> funcs...)