http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58982
Bug ID: 58982 Summary: [4.9 Regression] std::vector<std::atomic<int>> vai(10); does not compile anymore Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: vincenzo.innocente at cern dot ch gcc version 4.9.0 20131011 (experimental) [trunk revision 203426] (GCC) ok gcc version 4.9.0 20131102 (experimental) [trunk revision 204320] (GCC) cat vatom.cc #include<vector> #include<atomic> int main() { std::vector<std::atomic<int>> vai(10); for( auto & a : vai) a=0; return vai[0]; } c++ -Ofast -std=c++11 vatom.cc In file included from /afs/cern.ch/user/i/innocent/w4/include/c++/4.9.0/vector:60:0, from vatom.cc:1: /afs/cern.ch/user/i/innocent/w4/include/c++/4.9.0/bits/stl_algobase.h: In instantiation of 'typename __gnu_cxx::__enable_if<(! std::__is_scalar<_Tp>::__value), _OutputIterator>::__type std::__fill_n_a(_OutputIterator, _Size, const _Tp&) [with _OutputIterator = std::atomic<int>*; _Size = long unsigned int; _Tp = std::atomic<int>; typename __gnu_cxx::__enable_if<(! std::__is_scalar<_Tp>::__value), _OutputIterator>::__type = std::atomic<int>*]': /afs/cern.ch/user/i/innocent/w4/include/c++/4.9.0/bits/stl_algobase.h:787:74: required from '_OI std::fill_n(_OI, _Size, const _Tp&) [with _OI = std::atomic<int>*; _Size = long unsigned int; _Tp = std::atomic<int>]' /afs/cern.ch/user/i/innocent/w4/include/c++/4.9.0/bits/stl_uninitialized.h:515:42: required from 'static void std::__uninitialized_default_n_1<true>::__uninit_default_n(_ForwardIterator, _Size) [with _ForwardIterator = std::atomic<int>*; _Size = long unsigned int]' /afs/cern.ch/user/i/innocent/w4/include/c++/4.9.0/bits/stl_uninitialized.h:544:33: required from 'void std::__uninitialized_default_n(_ForwardIterator, _Size) [with _ForwardIterator = std::atomic<int>*; _Size = long unsigned int]' /afs/cern.ch/user/i/innocent/w4/include/c++/4.9.0/bits/stl_uninitialized.h:605:50: required from 'void std::__uninitialized_default_n_a(_ForwardIterator, _Size, std::allocator<_Tp>&) [with _ForwardIterator = std::atomic<int>*; _Size = long unsigned int; _Tp = std::atomic<int>]' /afs/cern.ch/user/i/innocent/w4/include/c++/4.9.0/bits/stl_vector.h:1290:28: required from 'void std::vector<_Tp, _Alloc>::_M_default_initialize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = std::atomic<int>; _Alloc = std::allocator<std::atomic<int> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int]' /afs/cern.ch/user/i/innocent/w4/include/c++/4.9.0/bits/stl_vector.h:265:34: required from 'std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const allocator_type&) [with _Tp = std::atomic<int>; _Alloc = std::allocator<std::atomic<int> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<std::atomic<int> >]' vatom.cc:8:39: required from here /afs/cern.ch/user/i/innocent/w4/include/c++/4.9.0/bits/stl_algobase.h:740:11: error: use of deleted function 'std::atomic<int>& std::atomic<int>::operator=(const std::atomic<int>&)' *__first = __value; ^ In file included from vatom.cc:2:0: /afs/cern.ch/user/i/innocent/w4/include/c++/4.9.0/atomic:606:15: note: declared here atomic& operator=(const atomic&) = delete; ^