16得票3回答
函数模板特化虚函数是否合法?

在C++中,函数模板的特化应该与普通函数一样。那么这是否意味着我可以将其设置为虚函数? 例如:struct A { template <class T> void f(); template <> virtual void f<int>() ...

16得票7回答
如何防止std::vector<bool>的特化

我有一个模板类,其中有一个数据成员的类型为std::vector&lt;T&gt;,其中T也是我的模板类的参数之一。 在我的模板类中,我有相当多的逻辑处理程序执行以下操作: T &amp;value = m_vector[index]; 当T为布尔值时,似乎无法编译,因为std :: ...

16得票1回答
为什么不允许在类内部定义函数模板的特化版本?

在stackoverflow上找到了很多问题的答案后,我现在遇到了一个问题,我找不到答案,希望有人愿意帮助我! 我的问题是,我想在C++类内部显式模板化一个函数。我的编译器(g++)和C++标准(§14.7.3)告诉我,这种特化必须在声明该类的命名空间中完成。我明白这意味着我不能把特化放在类...

15得票6回答
为多个类提供一个模板特化

假设我们有一个名为“foo”的模板函数: template&lt;class T&gt; void foo(T arg) { ... } 我可以为某些特定类型进行专业化,例如: template&lt;&gt; void foo(int arg) { ... } 如果我想要将相同的...

15得票5回答
C++模板类特化:为什么需要重新实现常用方法

在这个示例中:#include &lt;iostream&gt; using namespace std; class B { public: virtual void pvf() = 0; }; template &lt;class T&gt; class D : public...

14得票7回答
有没有一种使用模板特化来区分new和new[]的方法?

我有一个自动指针类,在构造函数中传递了一个指针。我希望能够在构造函数中区分new和new[],以便在析构函数中正确调用delete或delete[]。这可以通过模板特化来实现吗?我不想在构造函数中传递布尔值。 template &lt;typename T&gt; class...

13得票3回答
为引用类型专门化的函数模板

为什么这段代码的输出结果是: #include &lt;iostream&gt; template&lt;typename T&gt; void f(T param) { std::cout &lt;&lt; "General" &lt;&lt; std::endl ; } ...

13得票1回答
C++链接和模板特化

我正在研究C++链接器在模板特化方面的行为。我正在使用微软Visual C++ 2010进行这些实验。我不知道其他工具链(例如gcc)的行为是否相同。 以下是第一段代码片段: // bar.cpp template &lt;typename T&gt; int foo() { retur...

13得票1回答
部分模板特化的歧义性

我看不出 main 函数中的语句有什么歧义。 template&lt;class T, class U, int I&gt; struct X { void f() { cout &lt;&lt; "Primary template" &lt;&lt; endl; } }; templa...

13得票1回答
类模板在类作用域中的特化?

为什么在A中S的特化是合法的,而在B中不是? (如果B没有注释掉) GCC 4.8.1: 错误:‘class B’的非命名空间作用域中存在显式特化 #include &lt;type_traits&gt; #include &lt;iostream&gt; class Y {}; cla...