问题标签 [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++ - C++ 部分特化(函数指针)
任何人都可以告诉,下面是否是合法的c++?
// 部分特化
g++ (4.2.4) 错误:函数调用不能出现在常量表达式错误中:模板参数 2 无效
尽管它确实适用于显式专业化
c++ - 具有 2 个或 1 个模板参数的同一类
如何制作带有 2 个参数而不是普通 1 个参数的模板特化?我正在构建一个指针类,现在我考虑扩展以创建一个数组,但如果我尝试这样的事情:
它给了我一个错误。模板...用 1 个参数重新声明。
我需要它是专门的,因为它pointer<mama,10>
有 size() 和 operator[] 而pointer<mama>
没有,它有 operator-> 和 *。
haskell - 使用 ghc 专门研究类型类
我怎样才能让 genOut/String 着火?
编译和链接:
结果:
预期的:
我怎样才能让这条规则着火?
c++ - c++中类模板内的模板类
这里的菜鸟仍在尝试使用模板。试图写一个消息处理类模板
所有定义在一个头文件中。我已经建立并测试了我的课程,一切都很好。现在,我正在尝试这样做:
但是,这一行在“>”标记之前给了我一个错误的表达式类型的错误。
我添加了必要的头文件来定义 MessageType 是什么。我以前用过这个函数很多次,只是没有在这个上下文中。
我怀疑编译器不喜欢模板函数在未定义的类模板(未专门化?)中完全定义(专门化?)的事实。我并没有完全理解是什么让模板“专业化”。大多数解释都集中在“完整”或“部分”的概念上,而不是首先使其专业化的原因。
抱歉,如果您想查看更多代码。我在工作中没有互联网接入,这就是我做这件事的地方,所以我必须把所有东西都放在我的心理“便签本”中,然后把它带回家。
c++ - 模棱两可的模板怪异
我有以下代码(抱歉,代码块很大,但我无法再缩小范围了)
但它无法与 gcc (v4.3) 一起编译
好的,所以它是模棱两可的。但我没想到它会成为一个问题,因为在使用专业化时,它几乎总是会有些模棱两可。但是,仅在使用带有 的类时才会触发此错误enable_if<...>
,如果我将其替换为如下所示的类,则没有问题。
为什么这个类不会引起歧义,而其他类会引起歧义?对于具有真正 ::value 的类来说,这两者不是一回事吗?无论如何,任何关于我做错了什么的提示都值得赞赏。
感谢您的回答,我的真正问题(让编译器选择我的第一个专业化)通过替换struct Foo<X, Base<X>, void>
似乎struct Foo<X, Base<X>, typename enable_if< Base<X> >::type >
按我想要的方式工作来解决。
c++ - C++ 模板化容器类:如何最好地支持有序和无序项类型?
我正在编写一个模板化的 C++ 通用容器类,它可以选择以明确定义的顺序维护其内容。以前它使用函数指针以合理的类型特定方式对其内容进行排序,但我试图将其更改为使用模板化仿函数参数。
由于通常情况下,类的用户可能希望在不同的容器中保持相同类型的项目以不同的方式排序,容器类采用一个可选的模板参数,让用户可以选择指定他自己的比较函子:
如果类用户未指定自定义仿函数类型,则默认使用以下 CompareFunctor 定义:
这适用于内置类型以及定义了小于运算符的用户定义类型。但是,我希望它也自动适用于没有内置或明确定义的小于运算符的类型。对于这些类型,容器内项目的顺序并不重要。
动机是我使用这个容器来保存很多不同的类型,而且大多数时候,我并不关心容器中类型的顺序,但在某些情况下我会……而且我不关心不想必须进入并向所有这些不同类型添加“虚拟”小于运算符,这样我就可以将它们与这个容器类一起使用......而且我不想显式指定自定义“虚拟” " 每次我使用表存储没有小于运算符的项目时,CompareFunctor 参数。
那么,有没有一种方法可以使用模板专业化(或其他东西),以便尽可能使用默认的 CompareFunctor(如上所示),但在该 CompareFunctor 会导致错误的情况下,C++ 会自动回退到“虚拟”像下面这样的 FallbackCompareFunctor?或者也许其他一些巧妙的方法来处理这个困境?
c++ - 参考指针的函数模板特化
我有一个模板功能:
我想将它专门用于一组类型:
它工作正常。当我编译这个:
我收到一个错误:
是否可以专门使用char*
指针类型参数而不使用类型定义?
c++ - 模板类的模板特化
我想专门研究以下成员函数:
对于其他bar
依赖模板的类。
例如,我想bar
使用std::pair
一些模板参数,例如:
其中 T1 和 T2 也是模板。如何才能做到这一点?据我所知,这应该是可能的。
所以现在我可以打电话了:
完整/最终答案:
c++ - 模板专业化错误 - C++(C++ Primer Plus 练习)
我目前正在学习 C++,所以我对该主题没有太多了解。我正在使用 C++ 入门加书,这就是问题所在:
编写一个模板函数 maxn(),它的参数是一个类型为 T 的项的数组和一个表示数组中元素数量的整数,并返回数组中的最大项。在使用函数模板的程序中对其进行测试,该函数模板包含一个包含六个 int 值的数组和一个包含四个 double 值的数组。该程序还应该包括一个特殊化,它将一个指向字符的指针数组作为参数,将指针的数量作为第二个参数,并返回最长字符串的地址。如果多个字符串的长度最长,函数应该返回第一个最长的字符串的地址。使用由五个字符串指针组成的数组测试特化。
这是我的代码:
我正在尝试传递一个字符串数组。我收到以下错误:
我很确定我犯了一些新手错误,我无法检测到它。谢谢 。
c++ - 特定成员的模板专业化?
是否可以专门化模板类的特定成员?就像是:
当然,此代码无效。