¿El mandato estándar enable_shared_from_this se hereda públicamente? ¿Por qué?
Es común heredar deenable_shared_from_this
solo para poder regresarshared_ptr
's de las funciones de los miembros como la intención principal, sin intención de exponerenable_shared_from_this
API en la clase derivada.
Desde hacer uso deenable_shared_from_this
uno debe hacerlo a través de la herencia pública (¿el estándar exige esto? ¿Cuál es la razón?), esto no se puede lograr yenable_shared_from_this
La API se fuerza a la clase pública API derivada.
Inherenteenable_shared_from_this
en privado y haciendoshared_ptr
una clase de amigo funciona en clang junto con libc ++, pero no funciona con stdlibc ++.
Ya queprivate enable_shared_from_this
+ friend shared_ptr
(o herencia protegida) parece cubrir este caso de uso, ¿no debería ser suficiente según el estándar para ajustarse como una solución para el problema "compartido de este"?