template-specialization

    14热度

    2回答

    ##A.hh template<class T> void func(T t) {} template<> void func<int>(int t) {} void func2(); ##A.cpp void func2() {} ##main.cpp func("hello"); func(int()); 我得到的错误是:错误LNK2005: “无效__cdec

    12热度

    1回答

    今天我的第三个问题;-),但我真的很新的c + +模板编程和运算符重载。 我尝试以下操作: terminallog.hh //snipped code class Terminallog { public: Terminallog(); Terminallog(int); virtual ~Terminallog(); template <clas

    2热度

    3回答

    请考虑我的代码的以下简化版本。 我有一个模板类A,模板功能Fill,并与基本类型,如int或char工作功能的专业化,另一个专业化与A工作: #include <sstream> #include <string> #include <iostream> template<size_t C> class A { public: A & operator=(std::stri

    4热度

    2回答

    我也看了一些相关的线程,但仍是问题不明确: #include <stdio.h> #include <vector> #include <iostream> template <> class stack <int> { public: std :: vector <int> stackVector; }; 的编译错误: templateSpecializ.c

    0热度

    2回答

    下面的代码编译成功,我百思不得其解: #include <stdio.h> #include <vector> #include <iostream> // Template definition template <typename T1, typename T2> class stack { }; // Template specialization template <>

    10热度

    3回答

    我知道相当多一点如何使用C++ - 模板 - 不是专家,介意你。与Java泛型(和斯卡拉,就此而言),我有我的diffuculties。也许,因为我试图将我的C++知识转化为Java世界。我在其他地方看过,“他们没有什么特别之处:Java泛型只是语法上的糖节省,C++模板只是一个荣耀的预处理器”:-) 我很确定,两者都有点简化了。所以,了解大和细微的差别,我尝试启动专业化: 在C++我可以设计一个

    1热度

    2回答

    我想实现一个条件指针解引用函数。其基本思路是: return is_pointer(arg) ? *arg : arg 为了限制需要专业化的数量,我试图用右值引用了其中arg不是指针的情况。这是我目前的实现(std::cout在那里仅用于调试目的): template< typename T > inline typename std::enable_if< std::is_pointer<

    1热度

    3回答

    为什么这不起作用? template <class T> struct Low; template <> struct Low<int> {};//Here I'm trying to specialize for int int main() { Low<1> a; }

    7热度

    3回答

    我有一个名为ABC类,它有一个类模板: template <class T> class ABC{} 在另一类我试图对象的商店ABC中的列表: class CDE{ private: list<ABC *> some_list; } 我打算存储可能具有不同类模板参数的ABC对象。是否有必要在编译时指定模板?如果容器应该存储不同类型的对象呢?这不可能吗?

    59热度

    4回答

    我知道语言规范禁止部分功能模板的专业化。 我想知道为什么禁止它的原因吗?他们没用吗? template<typename T, typename U> void f() {} //allowed! template<> void f<int, char>() {} //allowed! template<typename T> void f<char, T>() {} //not allo