web-dev-qa-db-fra.com

Les liaisons structurées imbriquées sont-elles possibles?

Supposons que j'ai un objet de type

std::map<std::string, std::Tuple<int, float>> data;

Est-il possible d'accéder aux types d'élément de manière imbriquée (c'est-à-dire lorsqu'il est utilisé dans une boucle à distance) comme ceci

for (auto [str, [my_int, my_float]] : data) /* do something */
37
Timo

Non ce n'est pas possible.

Je me souviens clairement d'avoir lu quelque part que les liaisons structurées imbriquées ne sont pas autorisées pour C++ 17, mais elles envisagent de l'autoriser dans une future norme. Je ne trouve pas la source cependant.

23
bolov

Non, ce n'est pas possible; mais c'est:

for (auto&& [key, value] : data) {
  auto&& [my_int, my_float] = value;
}

qui est proche au moins.

12