问题标签 [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++ - 将 std::enable_if 从参数移动到模板参数
我基本上试图做与std::enable_if 相同的事情:参数与模板参数,但我无法编译我的代码。
我有一个简单的第一个版本,它的参数中有 std::enable_if 并且工作正常:
但是我认为如果模板内容在一个地方并且希望 enable_if 不在函数参数中,它可能会更简洁。
现在,如果我只是移动 enable_if 部分,我会得到以下信息:
我需要 #pragma 警告(1 : 4519),否则函数模板上的默认参数是 VS2010 中的错误。问题是它仍然无法编译。第一条消息是:error C2783: 'void foo(T)' : could not deduce template argument for '__formal'
即使我不想这样做,我也尝试通过调用它来明确说明我想要的模板
但它仍然不起作用,新的错误是。
我希望有人能告诉我如何解决这个问题,当然欢迎所有对我的风格和我的代码可能存在的其他问题的评论。:)
额外的问题:有人知道为什么VS2010默认不允许函数模板上的默认参数吗?
c++ - 函数模板:具有类型特征的不同专业化
考虑到类模板,可以使用类型特征和虚拟启动器模板参数为某些类型的组提供模板特化。我之前已经问过了。
现在,对于函数模板,我需要同样的东西:即,我有一个模板函数,并且想要对一组类型进行专门化,例如,作为 class 子类型的所有类型X
。我可以用这样的类型特征来表达这一点:
我想过这样做:
但是,这不起作用,因为函数模板不允许部分特化。那么该怎么做呢?也许是类型特征作为类型的默认参数?但是代码看起来如何呢?
c++ - 如何使用可变参数模板打印出函数的参数?
此示例使用常见的可变参数模板和函数。我想打印出传递给的参数f
:
但我收到以下错误:
这实际上是我第一次使用可变参数函数,我并不完全了解如何很好地使用它们。
我也不明白为什么这不起作用以及我能做些什么来帮助它。
c++ - 64 位 G++ 4.6.3 不会将 long 视为专用函数模板中的 long long,即使它们的大小相同。这是一个错误吗?
考虑以下代码:
32 位 G++ 4.6.3 编译成功并产生输出:
但是,在 64 位 G++ 4.6.3 下编译会产生链接器错误:
即使使用f<int64_t>()
注释掉的行编译和运行会产生:
是否有充分的理由为什么 64 位 G++ 将f<long>
和f<long long>
视为不同的函数,即使long
和long long
大小相同,或者这是我应该报告的错误?
c++ - 模板函数实例化的可移植性问题
我正在从MSVC
to移植一个项目,Borland C++
但在template functions
. 例如,以下
导致编译器错误:
而修改后的例子
编译得很好。
如文章标题所示,这个问题的概括是,在某些情况下BCC
,如果参数作为在函数参数列表中构造的临时对象传入,则似乎与模板函数不匹配。
在更改所有受影响的代码之前,我想了解为什么BCC
认为第一个示例是错误的。这是编译器的缺陷,还是我的代码不符合C++
标准?
我正在使用RAD Studio / C++ Builder XE2
.
c++ - T 和 T const 上的模板函数实例化的地址
在以下设置中是否有可能
check
会回来true
一些T
吗?这是否取决于内部正在做什么id
?标准对此有何规定?
c++ - C++ 中的部分模板函数规范有效,但为什么呢?
我试图找出模板函数的部分规范是否是 C++ 标准的一部分,或者这是否是特定于编译器的东西。
通过部分规范,我的意思是仅指定编译器无法推断的类型。因此,如果我有一个模板函数“f”,它采用 3 种类型,其中一种用于参数并且可以推导出来,我可能会使用表单调用“f”f<type, type>(parameter)
这是一个例子:
我已经用 g++ 4.5.3、g++ 4.6.3、VS2010 和 VS2012 对此进行了测试。由于它似乎得到了编译器的广泛支持,我敢打赌它是标准的一部分,但有人能证实吗?有没有人有任何资源链接或指针可以解释为什么这样做?
inline - 类模板+函数模板
当我尝试按如下方式创建模板类时:
我收到以下错误:
当我在类定义中拥有这些特化时,都立即编译了。所以我想我的模板语法有问题。但是很难找到混合了具有专业化的类和函数模板的示例。所以我最终来到这里希望有人对我有很好的暗示。
c++ - 模板类中模板函数的相同类型
我有以下代码:
现在,虽然它编译得很好,但输出只是:
为什么 first=third 不打电话给
?
c++ - 延迟函数模板实例化
在这个相当人为的示例中,我试图将函数模板传递给我的函数,并希望我的函数在内部实例化函数模板。本质上,我不希望用户知道我的函数的类型和工作原理,而只是能够传递一个函数模板让我实例化自己。自包含示例(不编译):
这无法按预期在 gcc-4.7.2 上编译,并出现以下错误:
是否有任何技巧或间接可以解决这个问题?
谢谢你。