¿Cuál es la razón para la implementación boost :: none_t?

Boost.Optional utiliza un tipo ficticio para permitir la construcción de instancias no inicializadas deboost::optional<T>. Este tipo se llamanone_t, y una instancianone ya está definido en un encabezado para mayor comodidad, lo que nos permite escribir código como el siguiente:

boost::optional<int> uninitialized(boost::none);

Mirando la definición denone_t, Me di cuenta de que, de hecho, es un typedef correspondiente a un puntero a miembro a alguna estructura ficticia:

namespace boost {

namespace detail { struct none_helper{}; }

typedef int detail::none_helper::*none_t ;

none_t const none = (static_cast<none_t>(0)) ;

} // namespace boost

¿Cuáles son las ventajas de usar un typedef tan complicado en una simple estructura vacía como esta?

namespace boost {

struct none_t {};

none_t const none;

} // namespace boost

Respuestas a la pregunta(1)

Su respuesta a la pregunta