‘auto_ptr’ is deprecated in sc/source/core/tool/rangenam.cxx

Noel Power nopower at suse.com
Thu Sep 20 12:24:45 PDT 2012


On 20/09/12 18:54, Michael Stahl wrote:
> On 20/09/12 19:23, julien2412 wrote:
>> Hello,
>>
>> WAE is enabled in my autogen.lastrun for master sources. I just updated and
>> had this during compilation:
>> /home/julien/compile-libreoffice/libo/sc/source/core/tool/rangenam.cxx: In
>> member function ‘void ScRangeData::SetCode(ScTokenArray&)’:
>> /home/julien/compile-libreoffice/libo/sc/source/core/tool/rangenam.cxx:642:50:
>> error: ‘auto_ptr’ is deprecated (declared at
>> /usr/include/c++/4.7/backward/auto_ptr.h:87)
>> [-Werror=deprecated-declarations]
>> cc1plus: all warnings being treated as errors
I have werror enabled, it didn't complain for me ( presumably my gcc is 
too old )
>>
>> Here are the lines:
>>      640 void ScRangeData::SetCode( ScTokenArray& rArr )
>>      641 {
>>      642     ::std::auto_ptr<ScTokenArray> pOldCode( pCode);     // old pCode
>> will be deleted
>>      643     pCode = new ScTokenArray( rArr );
>>      644     InitCode();
>>      645 }
>>
>>
>> Could it be replaced by a non deprecated function (I don't know between
>> std::shared_ptr, std::unique_ptr or boost functions)?
> usually can be replaced with boost::scoped_ptr.
>
> but in this case i wonder, what purpose does pOldCode serve?
> why isn't pCode some kind of smart pointer?

no idea, I would have just deleted pCode in in the first line but there 
is liberal use of the following pattern

     SAL_WNODEPRECATED_DECLARATIONS_PUSH
     ::std::auto_ptr<ScTokenArray> pOldCode( pCode);
     SAL_WNODEPRECATED_DECLARATIONS_POP

in that file which made me think perhaps there is some reason to keep 
the old object while replacing it, for some reason I didn't notice the 
pragma macro foo.

Noel


More information about the LibreOffice mailing list