Czy (w C ++ 11) std :: vector :: resize (size_type) działa dla domyślnego konstruktywnego typu value_ty int [4]?
W C ++ 11 istnieją dwie wersjestd::vector::resize()
:
void resize( size_type count );
void resize( size_type count, const value_type& value);
Rozumiem (jak sugeruje jeden z komentarzy do jednej z odpowiedzi nato pytanie) że wymaga tego pierwszyvalue_type
być domyślnie konstruktywnym, podczas gdy drugi wymaga, aby był konstruktywny. Jednak (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
Więc albo moje zrozumienie było błędne, albo gcc jest błędne. Który?