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

c++ - 使用 declytype 推断类型时删除 CV 限定符

我有一个声明如下的常量:

现在我想要另一个具有相同类型“val”但没有常量规范的变量。

目前 decltype 保持常量。怎么剥呢?

0 投票
2 回答
847 浏览

c++ - lambdas 模板参数列表中的 auto 是标准的一部分吗?

今天,我偶然发现了以下代码片段:

http://cpp.sh/5p34

我只有一个问题:标准是否支持此代码?

它在 GCC(带有-std=c++14)中编译,但不能在 clang 或 Visual Studio 2015 (VC++14) 中编译。

这似乎应该成为标准的一部分,因为如果 lambdas 应该具有与常规函数相同的模板支持,那么应该支持它。

这似乎转换为所有模板类型,而不仅仅是std::pair.

0 投票
1 回答
46 浏览

c++ - 使用定义转换为数组引用

gcc 编译总是错误:错误:从类型“S”的表达式中对类型“int (&)[20]”的引用无效初始化

为什么这失败了?

0 投票
2 回答
81 浏览

c++ - 使用 lhs 引用时自动扣除模板

我想知道我是否写了这样的东西:

假设这database是一个能够存储不同数据类型的数据块的容器。为了获得对该数据块的引用,将nameasstd::string传递给 get() 以便在使用该调用的不同位置我有一种访问某些“全局”变量的方法。我有 get() 作为模板方法,我想保持这种方式。

我想要做的是缩短调用这样一种优雅的方式:

所以模板扣除是自动执行的。现在我可以为此创建一个宏,但这不是我想要做的,因为我认为这种情况下它并不优雅。

这个推论虽然不起作用,因为我们需要一个模板参数。为什么编译器不能获取为变量设置的内容并将其作为模板参数自动传递?有没有办法做到这一点?在这种情况下,我不想进行任何类型转换。我们可以省略吗?

0 投票
1 回答
48 浏览

c++ - C++ 模板包推导 - 在这个例子中我做错了什么?

这可以编译并正常工作:

...这也可以编译并正常工作:

...但这不会编译,因为它无法解析 T:

我在这里做错了什么?抱歉无法使用 Ideone,无法工作。

0 投票
1 回答
305 浏览

c++ - 自动扣除别名模板和模板类的模板参数

我想让具有可变参数模板参数列表的无状态 lambda 函数是递归的。但我需要类型擦除以避免像variable 'lambda' declared with 'auto' type cannot appear in its own initializer. 可变模板参数列表需要相应的功能对象具有模板化operator ()。对于简单的无状态 lambda 函数,我可以将其转换为指向简单的免费旧函数的指针,但是如何实现类似的可变参数无状态 lambda 函数?我想我想要的是模板参数列表的自动类型推导(在模板变量的实例化期间:在调用期间或在分配期间):(伪代码)

目前( C++14 )是否有可能实现这种行为(例如,使用std::function或其他类型擦除方式)?是否有类似语言功能的建议?或者可能已经被现有的语言规则完全禁止?

另一个可能有用的例子:(伪代码)

0 投票
1 回答
836 浏览

c++ - 模板参数中的 T::* 是什么意思?

按照这里写的文章:

我遇到了这段代码(为了清楚起见,缩短并更改了):

所以这

引起了我的注意。

谁能解释我的C::*部分?那是一个返回的函数指针,std::string但还有什么呢?

0 投票
2 回答
126 浏览

c++ - 自动 stdMaxInt = std::max 的类型推导失败;

使用 GCC 4.8.4 并g++ --std=c++11 main.cpp输出以下错误

对于此代码

为什么它可以使用myMax但不能使用std::max?我们可以让它工作std::max吗?

0 投票
2 回答
144 浏览

c++ - 函数模板、部分应用和模板参数推导

我尝试让以下主要函数编译并按预期工作:

现在我的补充代码看起来像这样:

不编译

知道如何让编译器推断出模板参数吗?

0 投票
1 回答
196 浏览

c++ - 如果推导出其中之一,是否可以不指定所有模板参数?

假设我有这样的功能:

由于类型推导,我可以在不指定类型的情况下使用它:

假设我改变了功能:

即使可以推断出类型,我现在也必须这样称呼它

但我想要这样的东西:

到目前为止,我已经找到了一种方法来做到这一点:

所以我现在可以使用:

还有其他方法吗?