open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2435.htm

+ я могу написать что-то вроде:

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

Почемуif (a_sp)&nbsp;проверить работу правильно?a_sp&nbsp;не является логическим значением, но как оно проверяется на истинность или ложь? Как условие if знает, как проверить результатa_sp.get()&nbsp;функционировать? Или, если это не так, как этоNULLизa_sp&nbsp;проверил? Есть ли какая-то функция вshared_ptr&nbsp;определил, что преобразует его в логическое значение?