Дополнение:
Опыты показали, что во всем виноват конструктор
QSharedPointer(std::nullptr_t)
, как только к своему классу добавил аналогичный конструктор, стало возможно преобразование "return false" в объект класса.
nullptr_t ff2(0); //так можно
nullptr_t ff1(false); //так вроде нельзя, но MSVC не ругается
Старый и неверный ответ:
Ну так судя по документации QSharedPointer имеет соответствующие
операторы преобразования, а именно
bool QSharedPointer::operator bool() const
bool QSharedPointer::operator!() const
Returns true if this object is not null. This function is suitable for use in if-constructs, like:
if (sharedptr) { ... }