template-specialization

    2热度

    2回答

    我想专门化一个模板类,以获得指向不同对象的几个指针。这按预期工作正常指针: struct Base{} b; template<Base* B> struct Test{}; template<> struct Test<&b>{}; 但不适合指针Derived对象: struct Derived : Base{} d; template<> struct Test<&d>{};

    3热度

    1回答

    我正在尝试编写一个程序,其中ServiceWorker的派生类(例如消防员)可以“对抗”类事件(火灾,损伤,抢劫)派生的对象。对抗会返回一个布尔值是否成功。例如,遇到火灾的消防员将会成功,但遇到抢劫的消防员不会。 ServiceWorker将跟踪对抗的数量和成功的对抗,并且有一个对抗方法来确定对抗是否成功。 我想使用特征来存储ServiceWorker的每个派生类可以在其类定义中遇到的内容。然而,

    0热度

    2回答

    我有几个模板类的 template < class Cost > class Transition { public: virtual Cost getCost() = 0; }; template < class TransitionCl, class Cost > class State { protected: State(){

    1热度

    2回答

    是否可以使用参数为返回值专门化模板?我在尝试执行下面显示的模板特化时遇到错误。所以我现在将这两个专业声明为使用宏来避免重复代码的不同功能。 #include <iostream> template<class T1,class T2> inline T1 func(const T2& a) { return T1(3.5);} template<> inline float func(

    5热度

    1回答

    我试图专注一类模板的一个特例中的一个函数,但找不出正确的语法功能模板的显式特m试图为char专门设置fn,Foo专用于int。但编译器不喜欢我写的东西。那么正确的语法应该是什么?

    1热度

    1回答

    如何获取类模板以接受可能具有两个不同参数列表之一的另一个类模板?也就是说,非类型参数或类型和非类型参数: template <int X> struct Foo1{}; template <typename T, int X> struct Foo2{}; 我希望能够为任一这些模板传递给我的模板(加上跟随他们的脚步未来模板)。我希望这说明了我后,虽然语法是全错: template <t

    1热度

    1回答

    最基本的问题是,是否应该可以从专门的模板方法中添加或删除constexpr。 假设下面的代码: //this is my general vector template with a constexpr default ctor template<typename T, typename STORE> struct alignas(16) vec { union { ST

    1热度

    1回答

    考虑 Class Wow{ public: //main metod template<typename T> void foo(T t){ cout << t << endl; } template<> void foo<int>(int t){ cout << "specializa

    4热度

    1回答

    当我试图专注一个模板变量为一个通用的容器(例如std::list<...>,而不是一个具体的一个,如std::list<double>)我得到一个链接错误与gcc 5.3(但不与clang 3.5 ) /tmp/ccvxFv3R.s: Assembler messages: /tmp/ccvxFv3R.s:206: Error: symbol `_ZL9separator' is already

    2热度

    2回答

    我目前正在编写一个模板类来存档(或序列化)和从二进制格式中解开数据。首先,我试图关闭我将要使用的模式。我主要倾向于使用模板,因为unarchiver没有用于方法重载的输入类型。例如,下面的例子是OK: Archiver ar; int i; archive(ar, i); 但它的对手是不是: Unarchiver unar; int i; i = unarchive(unar);