【发布时间】:2019-01-30 05:37:26
【问题描述】:
根据[dcl.fct]/2,下面的sn-p是合法的。 GCC and clang compile and execute the code,
#include <iostream>
int i = -1;
auto f()->auto&& { return i; }
int main(){
f() = 2;
std::cout << i << '\n';
}
打印
2
但是在 C++ 中允许这样做的目的是什么?
在上面的示例中,只需将 trailing-return-type 替换为 int& 即可获得相同的结果。换句话说,我正在寻找一个包含占位符类型的尾随返回类型有意义的示例。
【问题讨论】:
-
如果被禁止了,就会问“为什么禁止?”。
-
为了让你在上面的代码中写
f()这样的函数? -
为什么不允许?我不得不承认,我真的不明白
-
@user463035818 在上面的示例中,只需将 trailing-return-type 替换为
int&即可获得相同的结果。换句话说,我正在寻找一个包含占位符类型的尾随返回类型有意义的示例。 -
@WaldB:仅仅因为它没有真正的用途(?),它不应该被禁止。这会使语言不一致。
标签: c++ language-lawyer