问题标签 [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 投票
3 回答
1179 浏览

c++ - 模棱两可的部分模板特化

我有一个特质类,我需要多次专门化(和部分专门化)。

一些部分专业重叠:

我应该如何使用工作代码获得相同的结果?

enable_if我对and发疯了is_same,我什至不再确定这是正确的方法......

0 投票
4 回答
707 浏览

c++ - Operator() 的部分特化

我的一个类声明了一个模板函数:

我想部分专注于typename A. B是一个实现了一个非常小的接口的类型家族,我们使用了很多,所以我希望我的专长是通用的B。我怀疑这是双重烦恼,因为typename A它仅用作返回类型。

从互联网上,我了解到我不能部分专门化一个函数,所以我创建了一个类,如下所示:

当我尝试编译它(使用 Visual Studio 2008)时,编译器崩溃(!)并且我收到以下错误:

我认为这是我的问题,而不是编译器的问题。有没有更好的方法来表达我想要的部分专业化?

0 投票
3 回答
6395 浏览

c++ - 特定类型的部分模板特化,c++

使用模板的部分专业化我想创建一个函数/方法:

A) 仅处理形式参数的一种特定原始类型(int、double、float、...),而其他类型则抛出异常

B)处理形式参数的更多非原始类型(用户定义类型)和其他类型抛出异常......

一些代码示例会很有帮助(没有 c++ boost 库)。谢谢你的帮助。

0 投票
1 回答
1370 浏览

c++ - C++ 部分模板特化语法

对于主模板:

与模板专业化,有什么区别

0 投票
3 回答
569 浏览

function - F# 内联函数特化

我当前的项目涉及词法分析和解析脚本代码,因此我正在使用 fslex 和 fsyacc。Fslex LexBuffers 可以有两种形式LexBuffer<char>LexBuffer<byte>我希望可以选择同时使用这两种方法。

为了同时使用两者,我需要一个 ^buf -> 字符串类型的词位函数。到目前为止,我的专业化尝试看起来像:

我收到一个类型错误,指出函数体应该是 type ^buf -> string,但推断的类型是 just string。显然,我做错了什么(主要是?)。

我正在尝试在 F# 中甚至可能吗?如果是这样,有人可以指出我正确的路径吗?

谢谢!

0 投票
1 回答
138 浏览

c++ - 部分特化模板内的方法指针

我正在尝试使用只读、只写和读写行为来实现属性。我认为模板专业化将是这里的方法,所以我尝试了这个:

这不起作用并给出编译器错误 (VC):部分特化不能具有依赖的非类型模板参数。

我在这里迷路了,这可能吗?

谢谢你的时间,理查德。

0 投票
4 回答
4850 浏览

c++ - 成员函数重载/模板专业化问题

我一直在尝试调用重载的table::scan_index(std::string, ...)成员函数,但没有成功。为了清楚起见,我已经删除了所有不相关的代码。

我有一个名为的类table,它有一个重载/模板化的成员函数scan_index(),以便将字符串作为特殊情况处理。

然后有一个hitlist类,它有许多模板化的成员函数,它们调用table::scan_index(T, ...)

最后,启动这一切的代码:

问题是table::scan_index(std::string, ...)它调用模板版本而不是调用。我尝试过同时使用重载(如上所示)和专用函数模板(如下),但似乎没有任何效果。盯着这段代码几个小时后,我觉得我错过了一些明显的东西。有任何想法吗?

更新: 我从电话中删除了<T>装饰。scan_index()结果是带有字符串参数的调用编译得很好,但是使用其他类型(例如 double)的调用会导致以下错误:

所以我回到使用模板专业化。现在我得到这个错误:

仅供参考:我正在使用 VC++ 10.0

解决方案:scan_index()我通过从类 中删除模板化函数table并简单地编写四个重载函数(其中三个除了签名相同)来解决此问题。幸运的是,它们都很短(不到十行),所以还不错。

0 投票
1 回答
4083 浏览

c++ - 未能专门化功能模板

这是家庭作业,虽然它已经用不同的方法提交了。

我从 Visual Studio 2008 得到以下信息

代码如下

函数对象定义为

这里有什么药?

[编辑]对不起,也许我应该明确继承

[/编辑]

[Edit2]
在工具箱的建议(这似乎很合理)之后,我得到了以下错误消息

main.cpp 仍然是相同的,但对函子层次结构和源文件进行了一些细微的修改。前向声明等不起作用,所以我不得不将定义放在单独的文件中。

我真的不明白这一点,我在这里错过了什么?一些转换操作,还是什么?
[/编辑2]

[Edit3]
我希望是最后也是最后的编辑。在调试和重写一些代码之后,我实际上得到了这个工作。这就是我最终的结果,这是我能做的最好的

这似乎有效,无论是在一个单独的项目(今天大部分时间都在搞砸这个)和我几天前提交的实际项目中。
非常感谢您的时间和帮助!
[/编辑3]

0 投票
4 回答
771 浏览

c++ - 模板类专业化/显式实例化是否提高了编译/链接器速度?

假设以下模板类在以int作为类型名的项目中大量使用,并且自引入此类以来链接器速度明显变慢。

定义一个类专业化有利于编译速度吗?例如。

还是显式实例化提供了更好的解决方案?例如。

0 投票
3 回答
7631 浏览

c++ - 引用类型的专用函数模板

为什么此代码的输出:

一般
一般
一般

第三个令人惊讶,因为该功能专门用于int&

编辑:我知道重载可能是一个合适的解决方案。我只是想了解它背后的逻辑。