なぜ以下のコードは右辺値参照できないのでしょうか。
cpp
1#include <iostream> 2#include <fstream> 3#include <string> 4#include <vector> 5 6using namespace std; 7 8auto cp(vector<string> original) 9{ 10 auto ret = original; 11 return ret; 12} 13 14int main() 15{ 16 vector<string> original{ "first", "second", "third" }; 17 18 const auto OK = cp(original).at(0); // OK 19 const auto&& NG1 = cp(original).at(0); // NG1 そもそも構文エラー表示が出る 20 const auto& NG2 = cp(original).at(0); // NG2 メモリ破壊される エラー表示はなし 21 22 cout << OK << endl; 23 cout << NG1 << endl; 24 cout << NG2 << endl; 25}
僕の考えていた内容だと
- NG1...OK
- NG2...構文エラーかと思っていました。
【追記】
あー、ベクターの一次オブジェクトの一部のみを参照し続けることができないということですかね。
でもそれだとなんでNG2は構文エラーではないのだろう...
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/16 02:47
2019/12/16 02:50
2019/12/16 02:51