В С++ 11 есть две версии std::vector::resize()
:
void resize( size_type count );
void resize( size_type count, const value_type& value);
Я понимаю (как было предложено одним из комментариев к одному из ответов на этот вопрос), что для первого требуется, чтобы value_type
был конструктивным по умолчанию, а второй требует, чтобы он был выполнен с возможностью копирования. Однако (gcc 4.7.0)
using namespace std;
typedef int block[4];
vector<block> A;
static_assert(is_default_constructible<block>::value,";-("); // does not fire
A.resize(100); // compiler error
Так что либо мое понимание было неправильным, либо gcc ошибкой. Что?