for(auto& element : container)のスタイルで範囲for文で回すとき、containerの部分に関数の戻り値を書いてもいいのかどうかを知りたいです。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
の6.5.4節(128ページ)、及び
https://cpprefjp.github.io/lang/cpp11/range_based_for.html
を読んだ感じでは、range-initがrvalue referenceで一度受けたコードと同等と説明されているので大丈夫そうな気がしますが、普段は規格を読まないので私の解釈が合っているのか自信がなく...
正確にご存じの方はいらっしゃいますか。
下記コードをVS2017及びgcc10.1.0(Wandbox)でビルド・実行したところは、一応動いてます。
C++
1#include <vector> 2#include <string> 3#include <iostream> 4 5 6class Hoge 7{ 8public: 9 std::vector<std::string> get() 10 { 11 return std::vector<std::string> 12 { 13 "0", 14 "1", 15 "2", 16 }; 17 } 18}; 19 20 21int main() 22{ 23 Hoge h; 24 for(auto& str : h.get()) 25 { 26 std::cout << str << "\n"; 27 } 28}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/31 02:46