问题标签 [trailing-return-type]

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 投票
2 回答
1020 浏览

c++ - 尾随返回类型中 decltype 的原因

我正在阅读有关“新” C++ 功能的文本,并遇到了decltype及其用法。我了解decltype在尾随返回类型中的原因,例如

没有它,编译器将无法派生模板函数的返回类型。但是为什么语法是这样的呢?

为什么不使用类似的东西

感觉更“自然”,因为返回类型是在通常的位置声明的,尽管是两个参数的结果。这是否与其他东西发生冲突,或者如果语法是这种不值得的方式,它是否会给编译器带来额外的工作?

0 投票
0 回答
46 浏览

c++ - 这个尾随返回类型声明的目的是什么?

我试图理解 cppreference 提供的示例std::visit。这是该链接中的示例:

我对overloaded声明特别感兴趣:

其中第一个是有道理的——结构overloaded是用它封装的每种类型的构造函数声明的。但是我不明白第二个的目的。这似乎是一个类似于以下的函数声明:

但是函数从来没有定义过,那么后面的例子怎么用呢?如果这只是一个构造函数,那么为什么它不需要overloaded::前缀,主体在哪里?我想我只是误解了尾随返回类型声明“扩展”的内容,因此任何对声明完成的内容的见解overloaded(Ts...)都会受到赞赏。

0 投票
1 回答
116 浏览

c++ - 尾随返回类型和返回类型扣除之间的冲突

我正在编写一些函数的返回类型相当复杂的代码。我想使用autofor 从返回类型推导,但这在前向声明中显然是不可能的。所以我希望至少只复制 return 语句的内容并执行以下操作,

这会在 GCC 7 中产生以下错误,

我当然可以重复

return在定义中(有效),但是当返回类型已经由语句唯一给出时,我为什么需要这样做?我的定义中的类型f最终如何比 更加模棱两可int f()

0 投票
1 回答
766 浏览

c++ - 尾随返回类型供参考

考虑以下代码。

使用 C++11 编译时,出现以下错误。

等效代码(注释函数)工作正常。但我想使用尾随返回类型。

0 投票
1 回答
21 浏览

.htaccess - 当根的一部分是文件夹时,将所有带有尾随的页面重定向到不带尾随的 URL

我已经尝试了在键入它们时重定向我的页面的所有代码,并在其后缀为根 URL,但它仅适用于不是文件夹的 URL,即对于链接 /mylink.html 我有文件夹“mylink”,在它里面我放我的文章,所以我尝试访问该文章,它表现良好,但是每当我单击与包含子页面的文件同名的文件夹时,它就会破解为 401 或 500 错误!

先感谢您!

这是我的代码:

0 投票
1 回答
117 浏览

c++ - clang 是否有权根据其重载之一拒绝具有尾随 decltype 返回类型的模板调用?

令我惊讶的是,clang 无法编译以下 c++11 代码:

更准确地说,clang 3.7.1 抱怨模板实例化链很长,表现得好像auto downcast(A<T>& a) -> /*...*/withT=int的实例化需要自身的实例化。clang 5.0.0 或 6.0.0 只会崩溃(!)。gcc 和 msvc 都接受。

螺栓链接

现在,clang-5.0.0 崩溃显然是一个错误,但 clang-3.7.1 错误是有道理的,所以…… 该代码首先是合法的吗?

让我强调一下,我问的是这段代码是否合法,而不是解决方法(一个简单的解决方法是拆分overloadand overloadoverload_const让后者只处理 const 引用,让前者调用后者)。

我可以在clang和gcc之间找到以下一些相关的争论点(使用带有可变参数模板函数的decltype的尾随返回类型,SO链接)以及这个类似的问题,其答案引用了标准(gcc可以编译可变参数模板而clang不能) 但是,我不确定此处是否适用完全相同的参数(因为downcast应该引用先前声明的重载,而不是尾随返回类型中的本身)。

0 投票
3 回答
140 浏览

c++ - C++11 中的类型转发

以下情况:

因为SomeFunc()我尝试过类似的东西

auto SomeFunc() ->decltype(&CTest::SomeFunc_Helper(std::integral_constant<int, 8>))给我std::integral_constant<int, 8>无法解决的错误。所以我的问题是如何进行从一个函数到另一个函数的类型转发?(欢迎使用不包括命名空间的 C++11 解决方案std::

0 投票
0 回答
97 浏览

templates - 使用带有 lambda 表达式和尾随返回类型的模板函数的 mingw-w64 编译器错误

在使用 mingw-w64 在 Ubuntu 16.04 for Windows 下交叉编译程序时,我遇到了这个错误。

考虑这个最小的示例程序 test.cc:

使用 g++ 编译(版本 5.4.0)

工作正常,但是 mingw(版本 5.3.1)

产生错误信息

在上述示例函数中省略模板时,编译成功。

为什么 mingw 会为此表达式产生编译器错误?有没有办法重新制定表达式以避免此错误?

0 投票
1 回答
151 浏览

c++ - 私有方法作为尾随返回类型(decltype)

当我尝试decltype()在私有方法函数上使用时,我收到私有方法的错误error: 'm1' has not been declared in this scope

现在我的问题是,为什么编译器不在类的私有部分中查找,因为删除尾随返回类型或将私有部分放在顶部masterMethod可以解决问题(decltype(auto)[如果允许 C++14] 也可以正确的自动返回类型扣除)。

decltype(m1())此外,删除whenm1()并具有相同的返回类型是否是不好的行为m2(),因为这也对我有用?

0 投票
1 回答
1871 浏览

c++ - lambda 尾随返回类型 auto 的用途是什么?

-> auto进去有什么用[]() -> auto { return 4; }

对我来说 - 它与[]() { return 4; }