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;
               ^

Reply via email to