问题标签 [decltype]

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 回答
323 浏览

c++ - `decltype`:函数返回类型`T`转换为用户定义类型的`T&`(VS2010)

编辑: GCC 编译得很好,这是 VS2010 问题。感谢您将我指向 ideone.com!

在尝试编译以下(VS2010)时:

我收到编译器警告:

对于内置类型来说一切都很好,但是对于用户定义的类型,decltype(...)在模板函数FCall中给了我TA&而不是TA,作为FCall返回类型和局部变量FCall

我看不出它背后的逻辑,我认为标准说decltype(f())应该准确给出返回类型 of f(). 它适用于内置类型。用户定义的类型是否有一些隐藏的问题,或者只是 VS2010 对我耍花招?

PS 我无法访问 GCC,有人可以请检查 GCC 编译是否没有警告?

0 投票
1 回答
115 浏览

c++ - 将 rng 列表存储在 std::array 中以进行多线程处理

我想使用 C++11 对我的代码的 rng 部分进行多线程处理。

我创建了一堆这样的RNG:

有了这个想法,我以后可以将每个 RNG 对象传递给一个单独的对象,该对象使用提供的生成器用某种形式的随机数std::thread填充另一个对象。array我不知道我需要为 rng 使用什么类型array。我知道如何创建一个 rng,如下所示:

但我需要明确地decltypearray.

0 投票
1 回答
203 浏览

c++ - `decltype` 作为模板函数声明中模板类型规范的一部分

以下代码在 MSVC++ 中编译,但在 GCC 4.5.1 中不编译:

注释指向有问题的行并显示修复(从设计的角度来看,这并不是真正的修复,只是编译修复)。几个问题:

  1. MSVC++ 正确编译它吗?

  2. 如果我们要更改参数的顺序

auto Func( PF fF, PP && fP, TA< decltype( fF( std::forward<PP>( fP ) ) ), pB > && fA )

auto Func( PF fF, TA< decltype( fF( std::forward<PP>( fP ) ) ), pB > && fA, PP && fP )

它不会编译,因为编译器将fPinTA< decltype( fF( std::forward<PP>( fP ) ) ), pB >视为未声明的变量。从逻辑上讲,编译器此时是否真的需要知道fP,它是否不解析整个声明,因为它是带有尾随返回类型的函数?为什么它不能“跳过”第二个函数参数并查看fP稍后是否在函数声明中声明?或者我在这里遗漏了一些基本的东西(也许是标准中的一些段落)?

0 投票
2 回答
1876 浏览

c++ - 使用 decltype 访问静态字段

可能重复:
C++0x decltype 和范围解析运算符

使用 g++ 4.6.1 编译下一个示例:

将产生下一个编译错误:

这符合标准吗?或者,它是 g++ 的怪癖吗?

0 投票
3 回答
2220 浏览

c++ - C++ 中的 decltype 和范围运算符

我需要获取实例化模板时提供的类型。考虑以下示例:

此代码的问题在于将范围运算符与 decltype 一起使用。Visual C++ 2010 抱怨如下:

错误 C2039:“TUnderlying”:不是“全局命名空间”的成员

我在 Wikipedia 上收集了有关该主题的一些信息:

在评论正式的 C++0x 委员会草案时,日本 ISO 成员团体指出“范围运算符 (::) 不能应用于 decltype,但它应该是。在获取成员类型的情况下会很有用(嵌套类型)来自实例如下“:[16]

David Vandevoorde 解决了这个问题以及类似问题,并于 2010 年 3 月投票通过了工作文件。

所以我认为 Visual C++ 2010 没有实现这个。我想出了这个解决方法:

我是否错过了任何更优雅、更简洁的解决方案?

0 投票
3 回答
1300 浏览

c++ - decltype(function) 作为类成员

我有:

这会导致编译器错误消息稍微令人吃惊(g++ 4.6.1):

将成员名称更改为

并使用它会导致链接器错误:

这是预期的行为吗?

0 投票
4 回答
1179 浏览

c++ - 为什么类不能从 decltype 的结果继承?

为什么一个类不能decltype在继承列表中有一个?例如,我希望以下代码A<B>继承自RType,但使用 G++ 4.6.1(使用-std=c++0x)它无法编译:

它提供以下输出:

的使用declval只是为了提供一个你需要使用的实例decltype,但其他的使用decltype也会失败(即没有declval)。

0 投票
1 回答
258 浏览

c++ - decltype(*&fun) 很奇怪?

我有:

产生

在 g++ 4.6.1 和 4.7.0 上。

谁能给我解释一下?

0 投票
2 回答
1295 浏览

c++ - 在这种情况下,放入 decltype(x) 以指定返回类型的语法是什么

我有以下函数可以std::vector在另一个容器中创建一个迭代器:

我想做的是:

我该怎么做x才能让它发挥作用?

尝试但失败的尝试:

(另外,我不是这方面的专家,所以欢迎任何其他建议,评论!谢谢。)

0 投票
1 回答
949 浏览

c++ - 成员函数的 decltype

在以下示例中,如何获取成员函数的返回类型?

当然,问题是我在定义 MyClass 时没有“mygetter”对象。

我想要做的是:我正在创建一个缓存,它可以使用 getter 返回的任何内容,因为它是关键。