问题标签 [function-templates]

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 投票
1 回答
1000 浏览

c++ - 如何修改参数包的每个元素,并从中创建一个元组?

我遇到了可变参数函数模板的问题。我需要检查参数包的每个元素,打包元素,然后将所有打包的元素填充到一个元组中并返回它。这是我想做的一般想法(返回类型只是占位符,不确定它们是什么):

有任何想法吗?

0 投票
2 回答
330 浏览

c++ - 如何制作通用类方法?

有没有办法制作类模板功能?

所以例如

或类似的规定。

不只是作业,我会评论。

0 投票
1 回答
619 浏览

c++ - 为什么 Stroustrup 的书展示了当时不允许的默认函数模板参数?

谁能解释我为什么在C++ Programming Language第三版的第 13 章中,Stroustrup 说明了函数模板的默认参数,尽管 C++(C++11 之前)不支持它们?这是 Stroustrup 在 13.4.1 节中给出的例子:

明确指定每个调用的比较是乏味的。幸运的是,选择默认值很容易,因此只需明确指定不常见的比较标准。这可以通过重载来实现:

或者,我们可以提供常规约定作为默认模板参数:

这是编译器错误:

错误:函数模板中不能使用默认模板参数

0 投票
3 回答
276 浏览

c++ - 功能模板规范

我想创建一个函数模板,其中类 T 仅限于特殊基类 T_base 的派生类。实现这一目标的有效方法是什么?谢谢你的帮助!

0 投票
2 回答
1020 浏览

c++ - 函数模板链接错误

我创建了一个函数模板,允许我获取任何数据类型的数据,但在编译时收到错误消息:

该函数声明为:

并称为:

哪里couponList[cpnCnt].discount是双。

代码本身在我的“内部”目录中编译得很好,但我在“外部”目录中收到上面的错误消息,后者本质上是内部代码的包装器。

0 投票
2 回答
1201 浏览

c++ - 包装 C++ 模板函数

我尝试在 GNU 的链接器包装选项的帮助下包装模板函数。代码如下所示:

上面显示的代码与以下命令链接:

不幸的是,这不起作用,并且总是调用原始函数f而不是我的包装版本__wrap__Z1fIiEvT_。你看到我犯了什么错误吗?

编辑:按照建议,我在此处附加了nm的输出,以确保我没有对模板函数的损坏名称犯任何错误:

0 投票
3 回答
5433 浏览

c++ - 函数模板特化失败?

#1 和 #2 有什么区别。如果我定义测试,#1 工作。但如果我评论它,#3 工作......这是编写函数模板专业化的正确方法......

0 投票
3 回答
775 浏览

c++ - 为什么两个函数有相同的地址?

考虑这个函数模板:

f<A>现在,我将和的地址打印f<B>为:

如果在 MSVS10 中编译,为什么它们会打印相同的地址?它们不是两个不同的功能,因此应该打印不同的地址吗?

更新:

我意识到在ideone上,它会打印不同的地址。MSVS10 优化了代码,因为函数不依赖T于任何方式,所以它产生相同的函数。@Mark 对此的回答和评论很有价值。:-)

0 投票
2 回答
3931 浏览

c++ - 如何避免友元函数模板类内定义重定义错误?

考虑这段代码:

它现在编译得很好(ideone)。但是,如果我取消注释 的定义B,则会出现以下错误(ideone):

我知道(好吧,我想我知道)它给出这个错误的原因。

所以我的问题是:

如何避免友元函数模板类内定义重定义错误?

只要我在类中提供主模板(不是特化)的定义,我就会得到这个错误。以这种方式定义主模板还有另一个问题:它使类模板的所有实例化的所有f函数模板实例化,我也想避免这种情况。我想交一个朋友,但不是一个朋友,如果和不一样。同时,我也想提供类内部的定义。是否可以?friendBasef<T>Base<T>f<U>Base<T>UT

0 投票
1 回答
106 浏览

c++ - 关于函数模板的相同代码块在 g++ 下编译正常,但在 VC6 下出错,为什么?

我正在阅读C++ Primer 3rd edition的“函数模板”一章,当我尝试按照示例进行操作时,发现代码几乎与书中相同,在VC6下编译时遇到错误,但在g++下一切正常。我不知道为什么?

这是代码:

发生的错误VC6如下所示: