I am still on the fence with Zig. Definitely not as easy to learn as C. On the other hand it is ways easier than Rust.
I would push back on the idea that it is a C++ replacement though. C++ has a complex type system, type hierarchies, constructors, destructors, template system and just a kitchen sink of stuff.
Zig is still a much simpler language, which follow a much more C like way of dealing with memory than C++. It uses data structures in ways much more similar to C. Interfacing with C libraries from Zig is much more natural than from C++.
Keep in mind C++ uses exceptions. Zig in contrast uses error codes akin to C.
I think stuff like try and non nullable pointers has to be there otherwise how is Zig advancing on C at all?
Because C is such a usable language to make common infrastructure to be used by many other languages, I think think there is a real need for a much safer version of it. That is what Zig gives you. It tries hard to be much safer than C, without entirely breaking the C philosphy like C++ and Rust did.
In some ways Zig is akin to Go's evil sister. It is a different take or a different way of thinking about being an improvement on C. Go emphasized ease of use more, at the expense of being much less C compatible. Zig has very strong C compatiblity. The price you pay for that is a more complex language.