问题标签 [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.
c++ - 如何使用类模板作为函数参数?
我有一个按照以下方式声明的类
我想在这样的函数中使用它作为参数:
但是当我编译时,它告诉我“使用类模板需要模板参数列表。” 我试过
但我得到同样的错误。我怎样才能解决这个问题?
c++ - 带有成员函数指针的模板元编程?
是否可以在模板元编程中使用成员函数指针?如:
当然,这是相当做作的,但有可能吗?(是的,可能有更好的方法,但请幽默。)
c# - C# 中的模板函数 - 返回类型?
似乎 c# 不支持类似 c++ 的模板。例如
我希望我的函数具有基于其参数的返回类型,我如何在 C# 中实现这一点?如何在 C# 中使用模板
编辑:我可以将 object 和 getType 用于几乎相同的目的吗?
c++ - 是否有与 Java 的 STL 容器类的 Collection 接口等效的 C++?
我想将任意容器作为函数的参数传递并对其进行迭代(不擦除也不推送元素)。不幸的是,看起来没有标准的方法来做到这一点。
CollectionInterface
我想到的第一个解决方案是由将包装 STL 容器的类实现的接口(我们称之为接口)。所以函数声明看起来像:
或者,我在考虑方法模板,它的优点是它在编译时保持绑定:
你认为哪种方式更好?
c++ - 模板函数中的错误(使用 Boost.Tuples)
我正在获取具有此模板功能的库。Gcc 4.1.2 ( codepad.org ) 报告以下错误:
对模板更有经验的人可以提供建议吗?自己研究的问题或关键词?这让我卡住了。
c++ - 函数模板 - 显式特化与全局函数 (C++)
我知道使用函数模板是为了使函数具有可移植性,以便它们可以与任何数据类型一起使用。
如果我们对特定数据类型有更有效的实现,那么模板的显式专业化也会完成。
但是,除了显式特化,我们也可以只编写一个可以从main
. 这将为我们节省一些处理时间,因为编译器会比显式专用模板函数更快地定位非模板函数,这反过来会在效率方面更好。
那么,当我们可以选择调用非模板函数时,为什么还要使用显式特化呢?
如果我错了,请纠正我!
编辑1:
我的教授告诉我,每当我们制作函数模板并从中调用函数时main
,编译器首先会查找模板化函数,如果无法找到该函数,则它会依次搜索函数模板创建一个模板函数,然后调用它。
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?
c++ - 模板化函数.. 错误:模板 ID 与任何模板声明都不匹配
我编写了一个函数模板和一个明确专门化的模板函数,它只接受 3 个参数并计算其中最大的一个并打印出来。
专用功能导致错误,而模板工作正常。但我想使用char* type。
这是我得到的错误=>
error: template-id ‘Max<>’ for ‘void Max(char, char, char)’ does not match any template declaration
以下是我的代码:
c++ - 函数模板中类型的确定
我想请教一下关于函数模板的建议。我有一个函数可以将一些数据添加到缓冲区中。但我还需要在缓冲区中添加有关数据类型的信息。数据类型是以下枚举:
我需要从这样的函数创建一个函数模板:
您能否建议我如何根据参数类型从 ParameterType 为 appendType() 传递一个值。
我试图通过一些宏来做到这一点,但没有成功。非常感谢您的任何建议。
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++ 常见问题解答没有进入最佳实践。所以我追求的是:
- 是否有任何替代方法可以将代码划分为我建议的代码?
- 在实践中,什么最有效?