std::weak_ptr::expired
De cppreference.com
<tbody>
</tbody>
bool expired() const noexcept; |
(desde C++11) | |
Equivalente a use_count() == 0. Es posible que aún no se haya llamado al destructor del objeto gestionado, pero la destrucción de este objeto es inminente (o puede que ya haya ocurrido).
Parámetros
(Ninguno)
Valor de retorno
true si el objeto gestionado ya se eliminó, false de lo contrario.
Notas
Esta función es intrínsecamente susceptible a carreras de datos si el objeto gestionado se comparte entre subprocesos. En particular, un resultado falso puede volverse obsoleto antes de que pueda usarse. Un resultado true es confiable.
Ejemplo
Demuestra cómo se utiliza expired para comprobar la validez del puntero.
Ejecuta este código
#include <iostream>
#include <memory>
std::weak_ptr<int> gw;
void f()
{
if (!gw.expired()) {
std::cout << "gw es válido\n";
}
else {
std::cout << "gw ya expiró\n";
}
}
int main()
{
{
auto sp = std::make_shared<int>(42);
gw = sp;
f();
}
f();
}
Salida:
gw es válido
gw ya expiró
Véase también
Crea un shared_ptr que gestiona el objeto referenciado. (función miembro pública) | |
Devuelve el número de objetos shared_ptr que gestionan el objeto. (función miembro pública) |