Como o shared_ptr funciona se a condição

Em C ++, posso escrever algo como:

shared_ptr<A> a_sp = someFunctionReturningSharedPtr();
if (a_sp) {
    cout << a_sp->someData << endl;
} else {
    cout << "Shared Pointer is NULL << endl;
} 

Porqueif (a_sp) verificar o trabalho corretamente?a_sp não é um booleano, mas como é verificado se é verdadeiro ou falso? Como a condição if sabe para verificar o resultado dea_sp.get() função? Ou, se não, como está oNULLity doa_sp marcado? Existe alguma função emshared_ptr definido que o converte em valor boolean

questionAnswers(2)

yourAnswerToTheQuestion