问题标签 [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.

0 投票
2 回答
423 浏览

c++ - C++ 模板是否可以检查给定类型的函数是否已重载?

我有一个模板函数,我希望在不同的地方为不同的类型模板化。
问题是我想在编译时知道给定类型是否有专门化以两种不同的方式生成另一个模板。

我知道你可以像这里一样测试函数是否存在。

关于如何测试工具是否已专业化的任何机会?

想象一下,我想生成一个 isbool(),如果 tobool() 已被特化则返回 true,否则返回 false。

0 投票
2 回答
726 浏览

c++ - 类模板中方法模板的完全专业化

我知道这个主题现在应该已经过时了,但我在这个具体案例上遇到了困难。

直截了当,这就是我想要做的:

这可能吗?

0 投票
3 回答
339 浏览

c++ - Template specialization priorities when using pointers or references

I have a Serializer class like this:

Now my problem is when I have classes that inherit the Serializable interface they will always be handled by Func 1, even though I want them to be handled by Func 2 (pointers or references doesn't matter they both behave equally). It seems like C++ doesn't recognize that the Serializable interface is inherited unless you clearly specify that:

Now as soon as I forget to add <Serializable> somewhere the program of course bugs out, which is pretty annoying.

Is there any way around this?

0 投票
1 回答
138 浏览

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

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

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

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

谢谢你的时间,理查德。

0 投票
3 回答
332 浏览

c++ - 多个类型名的部分模板特化

在下面的代码中,我想考虑Op具有 return to 的函数(s)void而不是被视为 return true。的类型Retval和返回值Op总是匹配的。我无法使用此处显示的类型特征进行区分,并且Retval由于存在其他模板变量OpArgs.

如何在模板特化中只特化一些变量而不会出错?有没有其他方法可以根据返回类型改变行为Op

0 投票
3 回答
321 浏览

c++ - 这个部分模板专业化有什么问题?

稍后在代码中调用它:

给出这个错误:

src/cpfs/entry.cpp:1908: 错误: 函数模板部分特化 'call_retval_wrapper<bool, Op, Args>' 是不允许的

0 投票
2 回答
4297 浏览

c++ - 是否可以使用成员枚举来专门化模板?

用法:

无法使用 gcc 4.1.2 编译它抱怨使用T::SpecialFoo 的部分特化。如果Special是一个类,解决方案将是它前面的类型名。枚举(或整数)是否有与之等效的东西?

0 投票
3 回答
5938 浏览

c++ - C++ 模板部分特化错误

以下代码给了我一个编译错误:class Q64 is not a valid type for a template constant parameter

怎么了?我正在尝试专攻grid_residue课程Q64

更新:

改变了语法。现在出现错误error: function template partial specialization 'grid_residue<GRIDD, Q64>' is not allowed

谢谢

0 投票
3 回答
1209 浏览

c++ - 静态字段初始化的模板部分特化

我正在尝试类似以下的事情:

我将其包含在 2 个文件中 - a.cpp 和 b.cpp。我尝试编译并获得:

我认为我的 C++ 语法不好,但我想不出我做错了什么。

我无法template<>从变量定义中删除 ,因为我需要在多个翻译单元中使用它,这会导致链接错误。

我可以将该字段放入基类并使用 CRTP 为每种类型创建一个新实例,然后专业化就不会妨碍,但为什么这种“直接”字段初始化不起作用?我一定遗漏了一些语法。

我正在使用 VS2003 :(

0 投票
1 回答
2699 浏览

c++ - 从专门的模板类函数调用非专门的模板类函数

是否可以从专用模板类调用在非专用模板类中定义的函数?这是我正在尝试的示例:

GCC 抱怨它看不到非专业的类函数;即我猜它只在专业课上看起来。

有什么想法吗?

编辑

这是我的代码中更具体的示例(带有可能的解决方案):

我还有其他函数——toString()、countDigits() 等。我选择了这种方法,因此我可以为每种类型保留相同的函数名称(即不需要 toStringU32()、toString32 等)。我考虑过模板专业化,但我不相信这是可能的。