问题标签 [template-argument-deduction]
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++ - “AnySTLContainer”的模板" C++
我正在寻找一种方法来提供一个函数,该函数采用模板化 (STL) 容器,但要求其元素为某种类型(例如int
)。
这些函数调用应该是有效的:
这些函数调用应该是无效的:
有没有办法模板化“foo”以便int
接受容器,但不接受具有不同元素类型的容器?
最好的,本
c++ - 函数模板推导和initlializer_list
我有以下功能模板:
我调用函数如下:
它工作正常。
但是,如果我尝试如下调用它:
它无法推断出正确的类型,并且出现以下编译错误:
如果我这样称呼它:
类型推导有效,但如果我尝试如下调用它:
我得到与以前相同的编译错误。
我的问题是:
为什么模板类型推导在 (c) 中有效,但在 (d) 中无效?
(编译器是 gcc v4.6.3,带有标志 -std=c++11)
我看过类似的、较旧的 SO 帖子,但他们似乎并没有完全回答这个问题。
c++ - 如果通过引用传递二维数组,为什么编译器不能计算数组的大小
只是想知道-我写了以下功能
并称它为
编译运行没有错误。但是,如果我将“arr”更改为引用
我会有错误:
我知道如何解决它
但我不明白为什么会这样?
c++ - 无法推断可变参数模板的模板类型
我创建了简单的基于回调的事件管理器并且它可以工作,但是我有一些零模板参数的错误。
我正在使用此代码添加回调:
第二个问题:是否可以更改代码以删除<unsigned int>
类似模板规范?
例子:
c++ - 为什么此模板推理失败
此代码无法使用 clang++ 6.0 或 g++4.9.1 编译(代码没有意义,但这是实现它的最小示例):
我收到这个错误
要修复它,我需要bar()
像这样更改 's 调用:
我不明白为什么编译器无法推断模板参数,奇怪的是编译器对foo()
.
c++ - 自动检测基类的类型参数
我有以下代码可以正常工作:
这种方法可以在调用 as 时T
自动检测类型。当我切换到:int
registerBase(Derived())
shared_ptr
我可以防止非法类型,但我似乎无法自动检测类型T
。我可以使用一些技巧来自动将 shared_ptr 向下转换为Base<T>
模板推导工作吗?还是有另一种方法可以找到 typename T
?
PS:万一Q
扩展乘法Base<T>
我想出错(自动推演应该失败)。
c++ - VisualStudio 2013 中的推论失败,第一个模板参数是特定类型(反过来又被任意模板化)
如果 Argument 是具有特定第一个模板参数(任意模板化)的某个模板,我想要一个特定的函数来进行计算。
考虑这些类
我试图实现我的目标
问题:MSVS 2013 无法推断Y
.
错误的原因(根据 MSVS)是:
模板参数
const Y<A<Z>> &
不能从D<A<int>, B<S>>
with推导出来S=A<int>
。
我的目标是编写一个重载/特化来处理任何给定的类型Y
,其中Y::value_type
/的第一个模板参数Y
可以A<T>
是要保留 foo 签名的任何位置:void foo (Y const &);
这是 MSVS 中的错误(因为foo(D<A<int>>());
实际上使用 g++ 打印 2)还是我遗漏了什么?
PS:如果你在乎的话,圣诞快乐...
c++ - 添加参数后的“模板参数推导/替换失败”
我需要模板函数,它将调用其他函数,其参数取自std::tuple
. 我写了一些代码,可以正确编译:
现在我需要再添加一个参数,它是指向函数的指针:
我尝试以许多不同的方式来做,但编译器总是返回template argument deduction/substitution failed
和inconsistent parameter pack deduction with '' and ''
. 我不明白,我的代码有什么问题。编译器输出中没有任何有用的信息。
有人可以帮我正确地写这个吗?
c++ - 模板参数推导和 SFINAE - 使用 std::enable_if
我正在尝试过滤传递给重载函数模板的类型的方法。我正在使用 Visual Studio 2013。
三部分问题:
- 为什么我的编译器不能推断
Blorg3
? TFoo2(argc)
生成编译器错误的原因是否与#1 相同?- 有没有办法将模板参数传递给构造函数?
这是示例代码: