具有三元运算符和 nullptr 的 auto

auto with ternary operator and nullptr

我可以将 auto 与三元运算符一起使用吗?

auto obj = some_cond ? static_cast<className*>(baseClassObj) : nullptr;

编译在Visual Studio,代码运行正常,但会不会有什么意想不到的副作用?或者,这里的 auto 会一直是 className* 并且我可以放松并编写这样的代码吗?或者,用三元运算符,这样写比较好?

className* obj = some_cond ? static_cast<className*>(baseClassObj) : nullptr;

auto 推导出分配给它的值的类型。三元运算符只能return一种类型。 nullptr 可隐式转换为任何指针类型,但没有指针类型可隐式转换为 std::nullptr_t,因此在此示例中,三元运算符必须始终 return className*,因此 auto 将始终推断为 className*.