template-meta-programming

    4热度

    2回答

    我想只为一个类的一个索引执行模板专业化。例如,在下面的代码中,无论第二个类是什么,只要第一个类是int,就想创建一个专门化。有没有办法来实现这个? template <class K, class V> class myclass { public: void myfunc(K,V); }; template <class K, class V> myclass<K

    9热度

    1回答

    我有一个问题,我需要发现两种类型(具有一个或零基类)的共同祖先,如果它存在。是否有可能建立一个类型特征来解决这个问题?在代码: template<typename T1, typename T2> struct closest_common_ancestor { typedef XXX type; // what goes here? }; 考虑以下几种类型: stru

    0热度

    1回答

    好吧,昨天我发布了几乎相同的问题here ,但我无法修改答案(工作)以满足我的需求......我不想弄乱其他话题,所以我开始了新的话题。 所以,我有2个(实际上15)结构,它可以由物体 class MyBase{}; template <typename Super, typename T1, typename T2> struct A : public Super { void

    7热度

    3回答

    我希望编写一个模板结构foo,这样foo<N>::value_type是最接近大小的整数(舍入)为N。例如foo<32>::value_type => uint32_t,foo<33>::value_type => uint64_t和foo<72>::value_type => uint64_t。 要做到这一点,我需要一个优雅的方法来为一系列值提供foo的部分特化,例如1 <= N <= 8返回u

    5热度

    1回答

    我有了一个模板参数T有使用案例,其中T类提供了一个功能func1的(A类A(成员)函数),而且用例,其中T没有按不提供它。 A中的函数f()应该调用func1(),如果它存在。我认为这应该可以用boost mpl,但我不知道如何。 这里是一些伪代码: template<class T> class A { void f(T param) { if(T::func

    2热度

    2回答

    在C++中,作为模板参数的递归模板和常量值允许执行代码生成和编译时执行的有趣示例,例如factorial。 是否有可能在OCaml中使用参数多态,函子或其他概念做类似的事情?

    5热度

    3回答

    我有一组有一个一对一的关系相关的类型,例如: TypeA ---> Type1 TypeB ---> Type2 TypeC ---> Type3 我在编译时知道这些关系。 然后,我有一个依赖于这两种类型的模板类: template<class T1,class T2> class MyClass { T1 foo; T2 bar; }; 现在,我的媒体库的用

    11热度

    4回答

    我目前正在做一些模板元编程。在我的情况下,我可以处理任何“迭代”类型,即任何类型,其中typedef foo const_iterator以相同的方式存在。我正在尝试为此使用新的C++ 11模板元编程,但是我无法找到检测某种类型是否丢失的方法。 因为我还需要根据其他特征打开/关闭其他模板特化,所以我当前使用了一个带有两个参数的模板,第二个模板通过std::enable_if生成。这是我目前在做什么

    2热度

    1回答

    所以我刚刚开始与模板元编程,我一直在写一个字符串类。我实现了ToString,Concat,CharAt和Length,没有太多与模板相关的问题。我试图实现子串如下: struct Null; // String class definition template <char C, class S> struct String { static const char chr =

    6热度

    1回答

    继承我想部分专门用于非字符数组的一个特点: template<typename T> struct is_container : std::false_type {}; template<typename T, unsigned N> struct is_container<T[N]> : std::enable_if<!std::is_same<T, char>::value, std