Qual é a razão para implementar boost :: none_t?

Boost.Optional usa um tipo fictício para permitir a construção de instâncias não inicializadas deboost::optional<T>. Esse tipo é chamadonone_te uma instâncianone já está definido em um cabeçalho por conveniência, permitindo escrever código como o seguinte:

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

Olhando para a definição denone_t, Notei que é de fato um typedef correspondente a um ponteiro para membro de alguma estrutura fictícia:

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

Quais são as vantagens de usar um typedef tão complicado sobre uma estrutura vazia simples como essa?

namespace boost {

struct none_t {};

none_t const none;

} // namespace boost

questionAnswers(1)

yourAnswerToTheQuestion