[Bug libstdc++/32618] std::vector calls uneccessary constructors instead of inplace construction of first object
oliver at kfs dot org
gcc-bugzilla@gcc.gnu.org
Wed Jul 4 04:27:00 GMT 2007
------- Comment #3 from oliver at kfs dot org 2007-07-04 04:27 -------
Andrew, currently it seems to work like this (pseudo code warning):
T* newSpace = alloc(newSize);
int i = 0 ;
for ( ; i < size ; ++i ) {
newSpace[i].constructor(oldSpace[i]) ;
}
const T defaultInstance ;
for ( ; i < newSize ; i++ ) {
newSpace[i].constructor(defaultInstance) ;
}
What I'm talking about is replacing "const T defaultInstance;" with
// Execute the default constructor on the first new element
newSpace[i].constructor() ;
// Take a reference to this object for copying to subsequent instances
const T& defaultInstance = newSpace[i] ;
// Advance i to the next element
++i ;
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32618
More information about the Gcc-bugs
mailing list