Является ли законным объявлять переменную цикла в цикле, основанном на диапазоне, с тем же именем, которое я использую в выражении оператора цикла? Надеюсь, что этот пример дает понять.
#include <iostream>
#include <vector>
struct bar {
std::vector<int> nums;
};
int main()
{
bar b;
b.nums = {1, 2, 3};
for(int b : b.nums)
std::cout << b << std::endl;
}
gcc 4.8 дает ошибку, в то время как clang 3.2 позволяет это.