Наткнулся вот:
#include <vector>
#include <iostream>
int main(int argc, char** argv)
{
std::vector<int> mVector;
for (int i = 0; i < 10; ++i) {
mVector.emplace_back(i);
}
for (auto&& intValue : mVector) {
std::cout << "i = " << intValue << std::endl;
int anotherValue = intValue + 10;
if (anotherValue > 10) {
int intValue = anotherValue;
std::cout << "another int = " << intValue << std::endl;
}
}
return 0;
}
Собираю как g++ -Wall autoname.cpp -o autoname
и ничего, молчок.
Причём если убрать if
, то получаю ожидаемое
autoname.cpp: In function ‘int main(int, char**)’: autoname.cpp:14:11: error: redeclaration of ‘int intValue’ int intValue = anotherValue; ^~~~~~~~ autoname.cpp:11:16: note: ‘int& intValue’ previously declared here for (auto&& intValue : mVector) { ^~~~~~~~
% g++ --version
g++ (Ubuntu 6.2.0-3ubuntu11~14.04) 6.2.0 20160901
Я что-то упустил или это таки косяк gcc?