问题标签 [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.

0 投票
1 回答
3453 浏览

c++ - 了解 SFINAE

据我所知,SFINAE 意味着替换失败不会导致编译错误,而只是从可能的重载列表中删除原型。

我不明白的是:为什么是这个 SFINAE:

但这不是吗?

据我了解,这里的基本逻辑是相同的。这个问题来自对此答案的评论。

0 投票
1 回答
278 浏览

c++ - 返回双精度或复数从模板函数

我正在编写一些函数模板来重载*矩阵类的运算符。我对类型矩阵doublecomplex<double>. 是否可以编写一个返回正确类型的模板函数?例如:

我希望返回类型VT*U. 这可能吗?

编辑:

我提出的后续问题收到的答案提供了适用于此处的其他信息。

0 投票
3 回答
260 浏览

c++ - 如果类型 T 和 U 相同,则函数模板无法推断类型

0 投票
2 回答
142 浏览

c++ - C++ 中的模板和标准算法

在阅读“Effective STL”一书时,作者给出了一个如何copy_if编写 a 的示例,因为这在标准算法中不存在。这是作者的版本:

现在我的问题是作者如何使用这样的方法:

我的问题是为什么不使用 copy_if 定义模板参数(因为它需要 3),例如

0 投票
2 回答
919 浏览

c++ - 为什么 std::function 不能接受推导类型作为其模板参数?

我的编译器是 VC++ 2013。

为什么f1不能按预期工作?

0 投票
3 回答
7117 浏览

c++ - 带空尖括号 <> 的模板函数调用

我对下面的模板行为感到困惑,它可以用空尖括号(没有参数的模板)很好地编译,因为在语法上,模板<>被保留以标记显式模板特化。

在上述情况下,模板参数真的是可选的吗?

0 投票
1 回答
45 浏览

c++11 - If P is not a reference type: If A is a reference type, the ref-qualifier of A’s type are ignored for type deduction

I'm learning template argument deduction stuff,I have read <14.8.2.1 Deducing template arguments from a function call>(C++11 draft) many times and I think that it missed a rule:
If P is not a reference type: If A is a reference type, the ref-qualifier of A’s type are ignored for type deduction.


It must be my fault, but I dont know where it is.

0 投票
0 回答
62 浏览

c++ - 新 C++ 标准支持的功能是否支持模板模板参数?

我在 C++ Template: The complete Guide 一书中找到了以下语句:

不允许函数模板的模板模板参数。

但是他跟随一段代码为我编译和运行。

这是否意味着新的 C++ 标准支持函数的模板模板参数?以下帖子的答案另有说明: How to get template template argument deduction working with functions?

0 投票
1 回答
1534 浏览

c++ - 无法使用 std::basic_string 推断模板参数

我的问题的精简版:

我想合并这两个功能:

..整合到一个模板化函数中:

而且我认为我将能够Foo(1)and一样调用(2),但令我惊讶的是,它甚至不起作用(3)

我尝试删除const参数的限定符s,甚至删除引用 ( ),或者使用而不是&调用,但结果都相同。lvaluesrvalues

编译器(gcc 和 VS - 所以我很确定这是符合标准的行为)无法推断Foo. 当然,如果我打电话给Foolike ,它会起作用Foo<char>(...)

所以我想了解为什么会这样,特别是因为调用(3)是调用参数对象的类型和函数参数类型之间的一对一类型。

其次,我想要一个解决方法:能够使用一个模板函数,并且能够像(1)and一样调用它(2)

编辑

(2)(3)做工作。我在我的编译器中声明它是错误的(不像我的问题):

对于那个很抱歉。

0 投票
1 回答
103 浏览

c++ - 为什么宏 __STL_FUNCTION_TMPL_PARTIAL_ORDER 要将模板函数包含在 std_pair.h 中

今天在stl_pair.h中看到如下代码:

我不认为模板函数与函数模板的部分专业化有任何关联。我错了吗 ?