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