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)
проверить работу правильно?a_sp
не является логическим значением, но как оно проверяется на истинность или ложь? Как условие if знает, как проверить результатa_sp.get()
функционировать? Или, если это не так, как этоNULL
изa_sp
проверил? Есть ли какая-то функция вshared_ptr
определил, что преобразует его в логическое значение?