Сколько раз std ::vector ::resize должен по умолчанию -создавать новые элементы?

Наша команда только что столкнулась с проблемой, описанной здесь http://forums.codeguru.com/archive/index.php/t-514404.html., то есть вызов some_vec.resize(new_size), где N = new_size - some_vec.size()с N >= 2, и VC10 по умолчанию -построил все N новых элементов, тогда как GCC по умолчанию создал один элемент в качестве прототипа , чтобы скопировать -построить его N раз для новых элементов.

Поскольку это вектор uuid, где конструктор по умолчанию -случайным образом инициализирует каждый новый экземпляр, мы получили N раз один и тот же uuid с GCC и N разных uuid с VC. Этого было достаточно, чтобы посеять хаос в нашем тестовом наборе на одной платформе, но не на другой, и это было неинтересно.

Таким образом, мой вопрос :кто прав? ВК или GCC? Или это один из тех любимых уголков C++, который не указан? ТИА, --ДД

5
задан ddevienne 30 July 2012 в 14:16
поделиться