У меня очень странная ошибка, которую я не могу понять.Я сузил его до небольшого фрагмента кода (если компилятор не переупорядочивает мои операторы, что я не верю в истинность).
...
std::cout << "here"<< std::endl;
std::vector<int>::iterator n_iter;
std::vector<int>::iterator l_iter;
std::cout << "here?" << std::endl;
for(n_iter = n.begin(), std::cout << "not here" ; std::cout << "or here" && n_iter < n.end(); n_iter++)
{
std::cout << "do i get to the n loop?";
...
}
Когда я запускаю это, я вижу первое «здесь»", второе" здесь? ", но я не получаю вывод" не здесь "или" или здесь ".И я определенно не получаю «я добираюсь до цикла n?».
Странная вещь в том, что моя программа работает (она почти полностью использует ядро процессора ...), ноон не заканчивается, он просто зависает.
Я пытался использовать clang ++ и g ++, и я не использую никаких оптимизаций.У меня установлена библиотека boost (и я использую ее часть boost_program_options) вместе с броненосцем.Но я не думаю, что компилятор должен переупорядочивать вещи ...
Это происходит с вызовами cout или без них внутри объявления цикла for, и он не просто пропускает цикл.
Вектор "n" имеет длину не менее 1 и задается вызовом boost_program_options.
Есть идеи?