18
:foo
でこのrvalue参照が左辺値にバインドされるのはなぜですか?次のコードは、GCC 8.0でコンパイルし、なぜ私は理解していない
decltype(auto) foo(int&& r) {
return r;
}
を、r
の宣言型がint&&
あり、そのためfoo
の戻り値の型もint&&
です。しかしr
自体は左辺値であり、左辺値は右辺値参照にバインドできません。
何か不足していますか?
[gcc8](https://wandbox.org/permlink/4CSGrHnZ26nGL8QK)で再現された場合、gcc8は戻り値の型が 'int&'であると推測します。 – songyuanyao
@songyuanyao彼らはコードをコンパイルすると主張します。 –
@BaummitAugen固定コードは[gcc8](https://wandbox.org/permlink/7mUFIa2VVAwgprEM)でコンパイルされますが、[clang6](https://wandbox.org/permlink/3lpIoyciSWUisYh7)ではコンパイルされません。 – songyuanyao