http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59192
Bug ID: 59192 Summary: error: use of deleted function ‘A::A(const A&)’ Product: gcc Version: 4.7.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: olaf--mail.gcc at olafdietsche dot de Created attachment 31250 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31250&action=edit Generated with g++-4.7 -v -save-temps -c -Wall -std=c++11 a.cpp The following snippet compiles fine with g++ 4.6 and fails with g++ 4.7 or g++ 4.8 #include <deque> #include <vector> struct A { A(const A&) = delete; }; void f() { std::vector<std::deque<A> > q; q.resize(4); } I attached the preprocessed file. If I missed a necessary part, please let know. System is Ubuntu 12.04 g++-4.7 -c -Wall -std=c++11 a.cpp In file included from /usr/include/c++/4.7/deque:63:0, from a.cpp:1: /usr/include/c++/4.7/bits/stl_construct.h: In instantiation of ‘void std::_Construct(_T1*, _Args&& ...) [with _T1 = A; _Args = {const A&}]’: /usr/include/c++/4.7/bits/stl_uninitialized.h:77:3: required from ‘static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::_Deque_iterator<A, const A&, const A*>; _ForwardIterator = std::_Deque_iterator<A, A&, A*>; bool _TrivialValueTypes = false]’ /usr/include/c++/4.7/bits/stl_uninitialized.h:119:41: required from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::_Deque_iterator<A, const A&, const A*>; _ForwardIterator = std::_Deque_iterator<A, A&, A*>]’ /usr/include/c++/4.7/bits/stl_uninitialized.h:260:63: required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = std::_Deque_iterator<A, const A&, const A*>; _ForwardIterator = std::_Deque_iterator<A, A&, A*>; _Tp = A]’ /usr/include/c++/4.7/bits/stl_deque.h:841:9: required from ‘std::deque<_Tp, _Alloc>::deque(const std::deque<_Tp, _Alloc>&) [with _Tp = A; _Alloc = std::allocator<A>; std::deque<_Tp, _Alloc> = std::deque<A>]’ /usr/include/c++/4.7/bits/stl_construct.h:77:7: required from ‘void std::_Construct(_T1*, _Args&& ...) [with _T1 = std::deque<A>; _Args = {std::deque<A, std::allocator<A> >&}]’ /usr/include/c++/4.7/bits/stl_uninitialized.h:77:3: required from ‘static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::deque<A>*; _ForwardIterator = std::deque<A>*; bool _TrivialValueTypes = false]’ /usr/include/c++/4.7/bits/stl_uninitialized.h:119:41: required from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::deque<A>*; _ForwardIterator = std::deque<A>*]’ /usr/include/c++/4.7/bits/stl_uninitialized.h:260:63: required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = std::deque<A>*; _ForwardIterator = std::deque<A>*; _Tp = std::deque<A>]’ /usr/include/c++/4.7/bits/stl_uninitialized.h:283:69: required from ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = std::deque<A>*; _ForwardIterator = std::deque<A>*; _Allocator = std::allocator<std::deque<A> >]’ /usr/include/c++/4.7/bits/vector.tcc:554:5: required from ‘void std::vector<_Tp, _Alloc>::_M_default_append(std::vector<_Tp, _Alloc>::size_type) [with _Tp = std::deque<A>; _Alloc = std::allocator<std::deque<A> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’ /usr/include/c++/4.7/bits/stl_vector.h:647:4: required from ‘void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = std::deque<A>; _Alloc = std::allocator<std::deque<A> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’ a.cpp:11:15: required from here /usr/include/c++/4.7/bits/stl_construct.h:77:7: error: use of deleted function ‘A::A(const A&)’ a.cpp:5:5: error: declared here g++-4.7 -v Using built-in specs. COLLECT_GCC=g++-4.7 COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.3-1ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --with-system-zlib --enable-objc-gc --with-cloog --enable-cloog-backend=ppl --disable-cloog-version-check --disable-ppl-version-check --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-1ubuntu1)