In several places in std::allocator<const T> (and one in shared_ptr, we were casting a 'const T*' to a 'void *' - implicitly casting away the const. Add const_cast to make that explicit. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@305397 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1884,7 +1884,7 @@ public:
|
|||||||
return static_cast<pointer>(_VSTD::__allocate(__n * sizeof(_Tp)));
|
return static_cast<pointer>(_VSTD::__allocate(__n * sizeof(_Tp)));
|
||||||
}
|
}
|
||||||
_LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type) _NOEXCEPT
|
_LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type) _NOEXCEPT
|
||||||
{_VSTD::__libcpp_deallocate((void*)__p);}
|
{_VSTD::__libcpp_deallocate((void*) const_cast<_Tp *>(__p));}
|
||||||
_LIBCPP_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT
|
_LIBCPP_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT
|
||||||
{return size_type(~0) / sizeof(_Tp);}
|
{return size_type(~0) / sizeof(_Tp);}
|
||||||
#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
|
#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
|
||||||
@@ -1900,7 +1900,7 @@ public:
|
|||||||
void
|
void
|
||||||
construct(pointer __p)
|
construct(pointer __p)
|
||||||
{
|
{
|
||||||
::new((void*)__p) _Tp();
|
::new((void*) const_cast<_Tp *>(__p)) _Tp();
|
||||||
}
|
}
|
||||||
# if defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
|
# if defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
|
||||||
|
|
||||||
@@ -1909,14 +1909,14 @@ public:
|
|||||||
void
|
void
|
||||||
construct(pointer __p, _A0& __a0)
|
construct(pointer __p, _A0& __a0)
|
||||||
{
|
{
|
||||||
::new((void*)__p) _Tp(__a0);
|
::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0);
|
||||||
}
|
}
|
||||||
template <class _A0>
|
template <class _A0>
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
void
|
void
|
||||||
construct(pointer __p, const _A0& __a0)
|
construct(pointer __p, const _A0& __a0)
|
||||||
{
|
{
|
||||||
::new((void*)__p) _Tp(__a0);
|
::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0);
|
||||||
}
|
}
|
||||||
# endif // defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
|
# endif // defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
|
||||||
template <class _A0, class _A1>
|
template <class _A0, class _A1>
|
||||||
@@ -1924,28 +1924,28 @@ public:
|
|||||||
void
|
void
|
||||||
construct(pointer __p, _A0& __a0, _A1& __a1)
|
construct(pointer __p, _A0& __a0, _A1& __a1)
|
||||||
{
|
{
|
||||||
::new((void*)__p) _Tp(__a0, __a1);
|
::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0, __a1);
|
||||||
}
|
}
|
||||||
template <class _A0, class _A1>
|
template <class _A0, class _A1>
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
void
|
void
|
||||||
construct(pointer __p, const _A0& __a0, _A1& __a1)
|
construct(pointer __p, const _A0& __a0, _A1& __a1)
|
||||||
{
|
{
|
||||||
::new((void*)__p) _Tp(__a0, __a1);
|
::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0, __a1);
|
||||||
}
|
}
|
||||||
template <class _A0, class _A1>
|
template <class _A0, class _A1>
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
void
|
void
|
||||||
construct(pointer __p, _A0& __a0, const _A1& __a1)
|
construct(pointer __p, _A0& __a0, const _A1& __a1)
|
||||||
{
|
{
|
||||||
::new((void*)__p) _Tp(__a0, __a1);
|
::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0, __a1);
|
||||||
}
|
}
|
||||||
template <class _A0, class _A1>
|
template <class _A0, class _A1>
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
void
|
void
|
||||||
construct(pointer __p, const _A0& __a0, const _A1& __a1)
|
construct(pointer __p, const _A0& __a0, const _A1& __a1)
|
||||||
{
|
{
|
||||||
::new((void*)__p) _Tp(__a0, __a1);
|
::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0, __a1);
|
||||||
}
|
}
|
||||||
#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
|
#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
|
||||||
_LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();}
|
_LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();}
|
||||||
@@ -3890,7 +3890,9 @@ public:
|
|||||||
template <class _Dp>
|
template <class _Dp>
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
_Dp* __get_deleter() const _NOEXCEPT
|
_Dp* __get_deleter() const _NOEXCEPT
|
||||||
{return (_Dp*)(__cntrl_ ? __cntrl_->__get_deleter(typeid(_Dp)) : 0);}
|
{return static_cast<_Dp*>(__cntrl_
|
||||||
|
? const_cast<void *>(__cntrl_->__get_deleter(typeid(_Dp)))
|
||||||
|
: nullptr);}
|
||||||
#endif // _LIBCPP_NO_RTTI
|
#endif // _LIBCPP_NO_RTTI
|
||||||
|
|
||||||
#ifndef _LIBCPP_HAS_NO_VARIADICS
|
#ifndef _LIBCPP_HAS_NO_VARIADICS
|
||||||
|
|||||||
Reference in New Issue
Block a user