up:: Cpp
source:: 構造化束縛 - cpprefjp C++日本語リファレンス

束縛とは、変数に値を代入すること。
そして構造化束縛とは、組やタプルや配列や構造体を分解し、各要素を取り出す機能。C++17。

std::pair<int, std::string> f()
{
  return {3, "Hello"};
}
 
// 関数f()の戻り値である整数と文字列の組を分解する。
// pairのfirstをid変数に代入し、secondをmessage変数に代入する。
// id変数の型はfirstの型(int)となり、message変数の型はsecondの型(string)となる。
auto [id, message] = f();
 
std::cout << id << std::endl;      // 「3」が出力される
std::cout << message << std::endl; // 「Hello」が出力される

pythonだと多重代入というらしい。変数宣言はauto固定であり、個々を別々に宣言することは出来ない。

前まではstd::pairを使って名前つけて変数用意したりしてたらしいので、だいぶ楽になった。
なお入れ子の構造は分解不可。

これを使うことで、index付きのforループが簡単に書けるようになった。ranged based forでのindexはC++20からなので、C++17ならこれが正道。
何故かUEのTArrayは回せない。イテレータが範囲for用の必要最低限機能しか持ってない?
CreateIterator使ってもダメ。

source:: 古典的なものからC++20時代のまでのfor文(インデックスありループ処理) - Qiita
source:: TArray::CreateIterator | Unreal Engine Documentation