#include <iostream>
#include <vector>
using namespace std;
template< class T >
void foo( const char * v, T ) {
cout << v << ": " <<__PRETTY_FUNCTION__ << endl;
}
int main() {
std::vector< int > array;
array.push_back( 42 );
for (auto it : array) {
foo( "#1", it );
}
for (auto& it : array) {
foo( "#2", it );
}
for (const auto it : array) {
foo( "#3", it );
}
for (const int & it : array) {
foo( "#4", it );
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8IGNsYXNzIFQgPgp2b2lkIGZvbyggY29uc3QgY2hhciAqIHYsIFQgKSB7Cgljb3V0IDw8IHYgPDwgIjogIiA8PF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CglzdGQ6OnZlY3RvcjwgaW50ID4gYXJyYXk7CglhcnJheS5wdXNoX2JhY2soIDQyICk7CgoJZm9yIChhdXRvIGl0IDogYXJyYXkpIHsgCgkJZm9vKCAiIzEiLCBpdCApOwoJfQoJZm9yIChhdXRvJiBpdCA6IGFycmF5KSB7CgkJZm9vKCAiIzIiLCBpdCApOwoJfQoJZm9yIChjb25zdCBhdXRvIGl0IDogYXJyYXkpIHsKCQlmb28oICIjMyIsIGl0ICk7Cgl9Cglmb3IgKGNvbnN0IGludCAmIGl0IDogYXJyYXkpIHsKCQlmb28oICIjNCIsIGl0ICk7Cgl9CnJldHVybiAwOwp9