Можем ли мы передать nullptr методу, принимающему умный указатель по ссылке?
Не с неконстантной ссылкой на lvalue.
void myFunc(std::shared_ptr<std::string> &myStrRef) {
// do something
}
void main() {
myFunc(nullptr);
}
Сбой компилировать, потому что myStrRef
не может быть привязан к временному объекту. Если бы вместо этого у вас было
void myFunc(const std::shared_ptr<std::string> &myStrRef) {
// do something
}
// or
void myFunc(std::shared_ptr<std::string> &&myStrRef) {
// do something
}
Тогда это было бы законно, поскольку эти ссылки могут связываться с временным объектом.