问题标签 [template-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.
c++ - 模板特化和模板模板参数的问题
我有一堂课Helper
:
我有另一个类模板,它是在将自身作为模板模板参数传递Exposure
时继承自。我也需要专攻。因此,我想写如下内容:Helper
E
Exposure
不幸的是,这不会编译。gcc 抱怨:
Exposure.h:170:错误:“模板>类 ExposureHelper”的模板参数列表中参数 2 的类型/值不匹配</p>
Exposure.h:170: 错误:期望一个''类型的常量,得到'Exposure'</p>
难道我做错了什么?我正在尝试做的事情有解决方法吗?
c++ - 专用类模板的类外构造函数定义
我正在尝试为类定义之外的显式专用类模板定义构造函数,如下所示:
但这似乎是一个错误。Comeau 说:error: "x<int>::x()" is not an entity that can be explicitly specialized
即使完整的课程是专业的。
这里有什么问题?
c++ - 在 C++ 中专门化时调用函数的非专门化版本?
假设我有一个模板类:
我想专门化do_something,但在其中我想调用“正常”的do_something函数:
有没有办法在我的专业函数中引用 do_something 的正常版本?还是我只需要复制代码?
(我知道我可以重构 foo 以使我不会遇到这个确切的问题,但是碰巧我不能真正修改“真正的” foo,因为它是高度共享的代码。)
c++ - 析构函数的模板特化
我正在构建一个 hashmap 类,它可以将字符串键和整数、布尔值、字符串或不同类型的指针作为其值,并且我希望它能够工作。对于我使用它的程序,我创建指针并将其传递到哈希图中。当我需要破坏地图时,问题就来了。如果哈希图的类型是指针,我需要在删除它的容器之前删除它(值)。
所以我现在的代码是这样的:我有一个 hashNode** 抽屉,我用它作为一个二维数组来保存指向地图中 hashNodes 的指针。这些相同的指针也保存在另一个 hashNode** 数组中,该数组在将它们添加到 map 时存储它们(为了便于/加快增长和复制 hashmap 的速度)。
然后我有一堆这样的方法:一个用于常规值:
一个用于指针:
是否有另一种更好的方法来正确解构 str_map 类的实例,以便正确处理所有内存?或者至少有一种方法可以使这项工作?
c++ - 模板类的特化模板构造函数
由于连续几个星期每天工作 14 小时,我的大脑已经融化了。
我有一个模板类,我正在尝试为这个类编写一个模板转换构造函数,并专门化该构造函数。编译器(MSVC9)对我很不满意。这是我正在尝试编写的实际代码的最小示例。编译器错误与代码内联。
帮助我解开我的大脑。我在这里需要什么语法来做我想做的事情?注意:在我的真实代码中,我必须在声明之外定义转换构造函数,所以这不是我的选择。
c++ - 只为一种类型专门化模板类成员函数
我有一个模板类,它有很多功能,但本质上是一个向量类。我想为 bool 类型添加一个函数。
我想vector<ar_index> reflected<bool>::which()
在反射类的特殊情况下添加一个函数,这是唯一有意义的情况。做这个的最好方式是什么。编译器似乎不喜欢将 which() 添加到反射中,并且只为 bool 定义它。
c++ - 如何在子类(c++)中专门化模板方法?
我正在尝试在其子类中专门化非模板类的模板方法:
// .h 文件
// .cpp 文件
但我收到一个错误:
如何扩展 MyWriter 类以支持用户定义的类?
c++ - 函数专用模板问题
我是模板新手。我尝试为函数模板定义专门的模板,但我的编译器返回错误。它是简单的 max 函数,只是为了练习模板而编写的;这是代码:
和专门的功能:
如果我尝试为 std::string 或任何其他类型(包括我自己定义的类)编写专门化并不重要 - 错误总是相同的:
“错误 C2912:显式特化;‘std::string maximum(std::string,std::string)’不是函数模板的特化……”
IntelliSense 提示:“没有函数模板的实例”
我应该改变什么才能使这个编译和正常工作?
提前致谢
c++ - 澄清模板功能专业化
我想创建一个计算器
现在我想让这个 Caculator 添加字符串,所以 add("Tim","Joe") 应该给我 "TimJoe" 。
我可以通过对现有类进行必要的更改来使用模板函数专业化来实现这一点吗?
c++ - 满足特定条件时如何防止 C++ 模板类方法的实例化?
我目前正在编写具有以下签名的通用矢量模板类(几何实体,而不是容器)...
... 其中 T 是算术类型,N 是维度。我想将叉积定义为运算符 ^ 的重载(位于类定义内)并仅在 N == 3 时启用它。我现在拥有的是:
不幸的是,使用 N != 3 实例化此模板,即使未引用运算符 ^,也会产生以下错误:
我究竟做错了什么?在这种情况下是否有替代 boost::enable_if 的方法?
非常感谢。