O mandato padrão enable_shared_from_this deve ser herdado publicamente? Por quê?

É comum herdar deenable_shared_from_this só para poder voltarshared_ptrdas funções-membro como a intenção principal, sem intenção de exporenable_shared_from_this API na classe derivada.

Desde que fazer uso deenable_shared_from_this é preciso fazê-lo através da herança pública (o padrão exige isso? qual é a lógica?), isso não pode ser alcançado eenable_shared_from_this API é forçada a API pública de classe derivada.

Inerenteenable_shared_from_this em particular e fazendoshared_ptr uma classe de amigo trabalha com clang junto com libc ++, mas não funciona com stdlibc ++.

Desde aprivate enable_shared_from_this + friend shared_ptr (ou herança protegida) parece cobrir esse caso de uso, não deveria ser suficiente pelo padrão para ser usado como uma solução para o problema "compartilhado a partir deste"?

questionAnswers(1)

yourAnswerToTheQuestion