Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

#485 AutoPtr constness does not build

open
nobody
5
2012-09-14
2011-12-07
Anonymous
No

If we want create an AutoPtr with const type, there are building errors.
So to avoid this, we are required to use AutoPtr with mutable type and use const_cast<>... it isn't pretty...

For example:
this could be nice:
const Poco::Util::AbstractConfiguration* pConf = ...;
Poco::AutoPtr<const Poco::Util::AbstractConfiguration=""> pView = pConf->createView("...");

but we obtain these building errors:
Poco/AutoPtr.h: In instantiation of 'Poco::AutoPtr<const Poco::Util::AbstractConfiguration="">':
Poco/AutoPtr.h:283:7: error: 'bool Poco::AutoPtr<C>::operator==(C) const [with C = const Poco::Util::AbstractConfiguration]' cannot be overloaded
Poco/AutoPtr.h:278:7: error: with 'bool Poco::AutoPtr<C>::operator==(const C
) const [with C = const Poco::Util::AbstractConfiguration]'
Poco/AutoPtr.h:298:7: error: 'bool Poco::AutoPtr<C>::operator!=(C) const [with C = const Poco::Util::AbstractConfiguration]' cannot be overloaded
Poco/AutoPtr.h:293:7: error: with 'bool Poco::AutoPtr<C>::operator!=(const C
) const [with C = const Poco::Util::AbstractConfiguration]'
Poco/AutoPtr.h:313:7: error: 'bool Poco::AutoPtr<C>::operator<(C) const [with C = const Poco::Util::AbstractConfiguration]' cannot be overloaded
Poco/AutoPtr.h:308:7: error: with 'bool Poco::AutoPtr<C>::operator<(const C
) const [with C = const Poco::Util::AbstractConfiguration]'
Poco/AutoPtr.h:328:7: error: 'bool Poco::AutoPtr<C>::operator<=(C) const [with C = const Poco::Util::AbstractConfiguration]' cannot be overloaded
Poco/AutoPtr.h:323:7: error: with 'bool Poco::AutoPtr<C>::operator<=(const C
) const [with C = const Poco::Util::AbstractConfiguration]'
Poco/AutoPtr.h:343:7: error: 'bool Poco::AutoPtr<C>::operator>(C) const [with C = const Poco::Util::AbstractConfiguration]' cannot be overloaded
Poco/AutoPtr.h:338:7: error: with 'bool Poco::AutoPtr<C>::operator>(const C
) const [with C = const Poco::Util::AbstractConfiguration]'
Poco/AutoPtr.h:358:7: error: 'bool Poco::AutoPtr<C>::operator>=(C) const [with C = const Poco::Util::AbstractConfiguration]' cannot be overloaded
Poco/AutoPtr.h:353:7: error: with 'bool Poco::AutoPtr<C>::operator>=(const C
) const [with C = const Poco::Util::AbstractConfiguration]'

And so we are necessary to write this code source:

const Poco::Util::AbstractConfiguration* pConf = ...;
Poco::AutoPtr<Poco::Util::AbstractConfiguration> pView = const_cast<Poco::Util::AbstractConfiguration*>(pConf->createView("..."));

Thank you to take in account this request ;)

Discussion