All, The following doesn't compile (with different messages depending on the order in which I declare things: #include <vector> main() { std::vector<double> doubles; double aDouble; for (int index = 0, std::vector<double>::iterator doublesIter = doubles.begin(); doublesIter != doubles.end(); ++doublesIter, ++index) { if (aDouble == *doublesIter) return(index); } } However, if I declare index and doublesIter before the for, then all works fine. Is that a bug? Fred