问题标签 [partial-specialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
492 浏览

c++ - 模板偏特化问题

我正在尝试为数学编程编写一个大小和类型的通用向量类。我在部分专业化方面遇到问题。

当我尝试将向量类的成员方法专门化为给定大小时,就会出现问题。

我可以提供一个简单的例子:

尝试编译这个简单的示例时,我收到一个编译错误,指出“交叉”专业化与现有声明不匹配:

我试图将 cross 声明为模板:

此版本通过编译但在链接时失败:

我在这里想念什么?谢谢,弗洛伦特

0 投票
1 回答
179 浏览

c++ - 模板专业化和普通旧函数

我只有一个简单的问题,请检查此代码:

用 g++ 4.7.2 编译当然可以,但我不清楚为什么输出是“2”而不是“3”。

据我所知,非模板函数总是比模板函数更受欢迎,那么为什么称为专门的 foo 呢?

谢谢

0 投票
1 回答
275 浏览

c++ - 在集合中的每个元素上调用 print 的通用算法

编写模板函数时,例如:

当循环遍历集合并取消引用迭代器时,如果你有类似的东西,一切都会正常工作,vector<int>除非你将它更改为vector<int*>. 在不复制代码的情况下处理单个模板函数中的差异的最佳方法是什么?

0 投票
3 回答
282 浏览

c++ - 如何将模板化函数重载转换为部分专用的模板化类静态方法?

我有几个想要基于类型质量专门化的函数,例如“字符、有符号整数、无符号整数、浮点数、指针”;使用 type_traits 似乎是这样做的方法,并且具有类似于以下的代码:

除了在我的真实代码中,我还有bar,baz等,以及foo.

但是,我想将所有这些功能按质量分组到一个模板类中作为static方法。这怎么做最好?这是我使用标签、SFINAE 和部分专业化的天真和失败的尝试:

注意:在我的真实代码中,我有bar,baz等,以及foo静态方法。

仅供参考,这是 C++03。

顺便说一句,我是否以传统方式进行模板化函数重载?

0 投票
0 回答
231 浏览

c++ - 部分专业化和友谊

假设你有这样的 A 类:

B类是这样的:

现在当 T 是同一类型时,您希望两个类成为朋友,这可能吗?

例如A<int, long>,与B<int>whileB<int>的朋友是与A<int, U>where的朋友,U可以是任何类型。

0 投票
1 回答
476 浏览

c++ - 指定容器类型的迭代器类型的部分特化

我有一个模板结构,它接受模板参数的迭代器类型。现在我需要为不同容器的迭代器专门化该类。我试过 std::vector

但我得到了这个编译器错误(VS11):'T':模板参数在部分专业化中未使用或可推导

有人可以告诉我为什么这不起作用吗?以及如何让它发挥作用?

0 投票
1 回答
104 浏览

c++ - 默认模板参数可以对应于专业化吗?

嗨 :) 我已经环顾了这个问题,似乎有很多相关的帖子,但到目前为止没有一个答案可以解决我的问题。如果您知道回答此特定问题的帖子,请告诉我是哪一个,我将删除此帖子。

这是我想要做的;我有一个带有一个模板参数的类,其默认值对应于模板特化。到目前为止(见下面的代码),它没有编译。令我烦恼的是,具有两个模板参数和部分模板专业化的类似情况可以编译并正常工作..:/

我究竟做错了什么?


案例 1:两个模板参数(编译和工作)

标题

cpp


案例 2:一个模板参数(不编译)

标题

cpp

我收到一个错误:在 'b' 之前缺少模板参数。提前感谢您抽出宝贵时间阅读本文!:)

0 投票
2 回答
737 浏览

c++ - 我可以创建匹配枚举类型的类模板的部分模板特化吗?

我有一个由一组类模板显式特化提供支持的函数模板,其语法如下

(在哪里GetAs<t>是这样的:

)

当该类型是枚举时,我想有一个专门DesiredType化,以便返回的类型与枚举的基础类型(或enum class)匹配。

这是可能的还是客户只​​需要自己指定基础类型?


我试图允许这样的代码:

0 投票
2 回答
1670 浏览

c++ - 特定值的 C++ 模板特化

我有Opers一些算术运算的结构:mult(), div(), mod().

而且我需要专门针对n. 这是Opers<1>.

但是,我还想专门n化 2 的幂(n = 2,4,8,16, ...)——在这种情况下,我可以优化操作mult()div()(使用按位左移或右移)。

我正在寻找像这样的建筑

有可能还是我应该阅读什么手册?

UPD。允许使用 C++11,甚至会更好。

0 投票
2 回答
833 浏览

c++ - 了解继承的嵌套类模板的部分特化

这个问题与之前的问答相关,其中提到了 gcc 的错误报告(据说在 gcc 4.5.0 中已修复),并且涉及嵌套类模板的部分专业化的一些特性。

我的设置是我有一个Base带有嵌套类模板的类,该类模板Inner部分专门用于char(使用虚拟参数技巧,因为在类中不允许显式指定)。

我现在定义了一个Derived我想进一步专门化的类Inner,由于某些奇怪的原因不能在课堂上完成(即使它仍然是部分专业化)。

第一个问题:为什么我必须部分专注Derived::Inner于命名空间范围?

但最奇怪的是,当我调用Innerfrom both Baseand的各种偏特化时,我只为之做Derived的偏特化也适用于。intDerivedBase

第二个问题:为什么Base::Inner<int>::value等于false,即使只是Derived::Inner<int>部分特化?

使用 gcc 4.8.0 的在线示例。我正在专门寻找标准中解释这种行为的引用。