variadic

    0热度

    1回答

    是很直,在x86的建立,我可以做到这一点:通过使 static id method(id)(id self, SEL _cmd, ...) { va_list args; va_start(args, _cmd); ARGS,你知道会包含一个指向栈: ARGS + =尺码类型); 我可以迭代args的完整列表。 保持简短,args将包含一个带有指向我的参数的指针的列表。 我

    1热度

    1回答

    我正在尝试使用variadic模板创建一个polymorhic容器。 auto& v2 = m.find<2, 3, 4>(255, 0, 0); 模板参数将指定“列”和参数,我想通过编译器可以预期适当的类型:作为 container<tag, std::string, int, int, int> m; 我想用下面的语法 集装箱被初始化。 对于我用一个模板参数(find<2>(255))

    0热度

    1回答

    我的目标是将数据发送到多个流。这可以通过使用boost :: tee来实现。但是我想用variadic模板编写一个封装器来使用多个流。 问题是我需要从后代结构到祖先结构的隐式转换。或类似的东西。 #include <boost/iostreams/tee.hpp> #include <boost/iostreams/stream.hpp> #include <fstream> #includ

    0热度

    2回答

    我很难覆盖可变参数函数。例子不是话值得更好,让我们举个例子: 这里是我的抽象类: public abstract class MyClass<T> { public abstract T DoSomething(params Object[] objs); public void ShowSomething(List<T> items){ foreach(T it

    1热度

    2回答

    我的目标是有几个流出。你可以看到下面的工作代码。 我想使用可变模板,但我失败了。下一个代码如何“可变”? 有几个非常相似的变量,所以我想它可以使用variadic模板重写,但我不知道如何。 template<typename T> struct IsOn { T *pt; bool isOn; IsOn(T& t, bool b):pt(&t),isOn(b) {} }; stru

    2热度

    1回答

    ExtractEveryPack<Pack>::type是Pack中所有“叶包装”的包装。 例如,ExtractEveryPack< Pack<double, Pack<int, char>, int, Pack<long, short>> >::type是Pack< Pack<int, char>, Pack<long, short> >。 但“外包装”没有退回。只有最内层的包(我称之为“叶包”

    0热度

    1回答

    我正在写一元函数MultipartitionWithUnaryPredicates,形式 MultipartitionWithUnaryPredicates<Pack<Args...>, UnaryPredicates...>::type ,这样的类型的模板包将一元谓词的包UnaryPredicates...被multipartitioned使用,按照一元谓词的顺序列出分区。如果你不知道我在说

    1热度

    2回答

    是否有可能以某种方式生成模板参数包? 我有下面的代码工作: zip<0,1,2>.expand(c); 我的目标是在编译时生成列表0,1,2,因为它是要与可变参数模板中使用,例如: zip<make_sequence<3>>.expand(c); 我需要这个在编译时生成,因为展开触发了一些模板化函数,根据图层/过滤器类型得到优化,所以我可以启动其他代码。 这个想法背后的意思是能够确定编译时

    5热度

    3回答

    在以下代码: #include <iostream> struct Base { virtual ~Base() = default; template <typename T, typename... Args> void helper (void (T::*)(Args..., int), Args...); void bar (int n) {std::co

    1热度

    1回答

    考虑以下代码 #include <iostream> #include <type_traits> enum Thing {Thing0, Thing1, Thing2, NumThings}; enum Object {Object0, Object1, Object2, NumObjects}; template <Thing> struct ThingValue; templ