En boost::detail::addressof_impl::f() una serie de reinterpret_cast
s se hace para obtener la dirección real del objeto en caso de class T
ha sobrecargado operator&()
:¿Por qué y cuándo se convierte en carbón volátil y necesario?
template<class T> struct addressof_impl
{
static inline T* f(T& v, long)
{
return reinterpret_cast<T*>(
&const_cast<char&>(reinterpret_cast<const volatile char&>(v)));
}
}
¿Cuál es el propósito de yeso para const volatile char&
en lugar de limitarte a enviar a char&
?
No es oximorónico ser 'const' y' volátil'. Por ejemplo, un registro de hardware de solo lectura que proporciona un valor diferente cada vez que se lee, o un objeto de solo lectura en la memoria compartida que se actualiza mediante otro proceso, debe tener ambos calificadores. –
Sí. Ese aspecto de const es de hecho confluente con volátil. – Ari