问题标签 [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 回答
1816 浏览

c++ - 如何使用类模板作为函数参数?

我有一个按照以下方式声明的类

我想在这样的函数中使用它作为参数:

但是当我编译时,它告诉我“使用类模板需要模板参数列表。” 我试过

但我得到同样的错误。我怎样才能解决这个问题?

0 投票
2 回答
792 浏览

c++ - 带有成员函数指针的模板元编程?

是否可以在模板元编程中使用成员函数指针?如:

当然,这是相当做作的,但有可能吗?(是的,可能有更好的方法,但请幽默。)

0 投票
7 回答
94416 浏览

c# - C# 中的模板函数 - 返回类型?

似乎 c# 不支持类似 c++ 的模板。例如

我希望我的函数具有基于其参数的返回类型,我如何在 C# 中实现这一点?如何在 C# 中使用模板

编辑:我可以将 object 和 getType 用于几乎相同的目的吗?

0 投票
3 回答
2380 浏览

c++ - 是否有与 Java 的 STL 容器类的 Collection 接口等效的 C++?

我想将任意容器作为函数的参数传递并对其进行迭代(不擦除也不推送元素)。不幸的是,看起来没有标准的方法来做到这一点。

CollectionInterface我想到的第一个解决方案是由将包装 STL 容器的类实现的接口(我们称之为接口)。所以函数声明看起来像:

或者,我在考虑方法模板,它的优点是它在编译时保持绑定:

你认为哪种方式更好?

0 投票
1 回答
656 浏览

c++ - 模板函数中的错误(使用 Boost.Tuples)

我正在获取具有此模板功能的库。Gcc 4.1.2 ( codepad.org ) 报告以下错误:

对模板更有经验的人可以提供建议吗?自己研究的问题或关键词?这让我卡住了。

0 投票
3 回答
607 浏览

c++ - 函数模板 - 显式特化与全局函数 (C++)

我知道使用函数模板是为了使函数具有可移植性,以便它们可以与任何数据类型一起使用。

如果我们对特定数据类型有更有效的实现,那么模板的显式专业化也会完成。

但是,除了显式特化,我们也可以只编写一个可以main. 这将为我们节省一些处理时间,因为编译器会比显式专用模板函数更快地定位非模板函数,这反过来会在效率方面更好。

那么,当我们可以选择调用非模板函数时,为什么还要使用显式特化呢?

如果我错了,请纠正我!

编辑1: 我的教授告诉我,每当我们制作函数模板并从中调用函数时main,编译器首先会查找模板化函数,如果无法找到该函数,则它会依次搜索函数模板创建一个模板函数,然后调用它。

0 投票
4 回答
150 浏览

c++ - 函数模板中的逻辑错误

我的教授给了我这个任务。

实现一个名为 Max 的泛型函​​数,它接受 3 个泛型类型的参数并返回这 3 个中的最大值。为 char* 类型实现一个专门的函数。

这是我的代码:

输出 :

10、20、30 中
最伟大的是 30 A、B、C 中
最伟大的是 A、B、C 中最伟大的是 A

问题 :

如果我在 Max 函数 A、B、C 中传递 char 数据类型,它返回 C,但如果我传递字符串数据类型 A、B、C,它返回 A。

为什么它在这里返回 A?

0 投票
2 回答
6653 浏览

c++ - 模板化函数.. 错误:模板 ID 与任何模板声明都不匹配

我编写了一个函数模板一个明确专门化的模板函数,它只接受 3 个参数并计算其中最大的一个并打印出来。

专用功能导致错误,而模板工作正常。但我想使用char* type

这是我得到的错误=> error: template-id ‘Max<>’ for ‘void Max(char, char, char)’ does not match any template declaration

以下是我的代码:

0 投票
3 回答
311 浏览

c++ - 函数模板中类型的确定

我想请教一下关于函数模板的建议。我有一个函数可以将一些数据添加到缓冲区中。但我还需要在缓冲区中添加有关数据类型的信息。数据类型是以下枚举:

我需要从这样的函数创建一个函数模板:

您能否建议我如何根据参数类型从 ParameterType 为 appendType() 传递一个值。

我试图通过一些宏来做到这一点,但没有成功。非常感谢您的任何建议。

0 投票
3 回答
2692 浏览

c++ - 成员函数模板的放置位置

C++ 中经常让我感到沮丧的一个方面是决定模板在头文件(传统上描述接口)和实现 (.cpp) 文件之间的位置。模板通常需要放在头文件中,公开实现,有时还需要引入额外的头文件,这些头文件以前只需要包含在 .cpp 文件中。我最近又遇到了这个问题,下面是一个简化的例子。

请注意,我打算使用我的实际类作为基类,因此是虚拟析构函数;我怀疑这很重要,但我把它留在柜台以防万一。上面的结果输出是

NowCounter的类声明都可以放在头文件中(例如,counter.h)。我可以把需要iostream的dtor的实现放到counter.cpp中。但是对于countAndPrint()同样使用 iostream 的成员函数 template 怎么办?它在 counter.cpp 中没有用,因为它需要在已编译的 counter.o 之外进行实例化。但是将它放在 counter.h 中意味着包括 counter.h 在内的任何内容也反过来包含 iostream,这似乎是错误的(我接受我可能只需要克服这种厌恶)。我也可以将模板代码放到一个单独的文件中(counter.t?),但这对于代码的其他用户来说有点令人惊讶。Lakos并没有像我想要的那样深入探讨这个问题, C++ 常见问题解答没有进入最佳实践。所以我追求的是:

  1. 是否有任何替代方法可以将代码划分为我建议的代码?
  2. 在实践中,什么最有效?