我刚安装了Visual Studio的最后一个版本,我有这个元组的deque:
using InstancesOfOneObject = std::tuple<DrawCmd, std::deque<bool>, std::deque<glm::mat4>>;
std::deque<InstancesOfOneObject> mInstancesByObject;
之后,我想用一个远程循环来遍历这个双端队列:
for (const auto &[cmd, validites, matrices] : mInstancesByObject)
然而,这不起作用,但是:
for (const auto &instance : mInstancesByObject) {
const auto &[cmd, validities, matrices] = instance;
效果很好。
这是正常的吗?有没有办法使用接近第一个想法的东西?
答案 0 :(得分:8)
唯一区别:
for (const auto &[cmd, validites, matrices] : mInstancesByObject) { ... }
和
for (const auto &instance : mInstancesByObject) {
const auto &[cmd, validities, matrices] = instance;
...
}
后者允许您仍然访问instance
,而在前者中它是一个未命名的对象。它们在其他方面相同。如果前者没有编译,你应该为该编译器提交一个bug。