Remix.run Logo
kronicum2025 5 days ago

The safety part in this article is incorrect. There's a google doc somewhere where Google did an internal experiment and determined that safety c annot be achieved in C++ without an owning reference (essentially what Rust has).

Attrecomet 4 days ago | parent [-]

Am I missing anything in the article about this problem in particular? Owning references are a part of modern C++, which should be covered by the author's arguments.

steveklabnik 4 days ago | parent | next [-]

I think your parent may be slightly confused, in the sense of terminology: "owning reference" is a contradiction in Rust terms.

Here's the document I believe your parent is referring to: https://docs.google.com/document/d/e/2PACX-1vSt2VB1zQAJ6JDMa...

The claim in the article:

> Yes, C++ can be made safer; in fact, it can even be made memory safe.

The claim from this document:

> We attempted to represent ownership and borrowing through the C++ type system, however the language does not lend itself to this. Thus memory safety in C++ would need to be achieved through runtime checks.

It doesn't use "owning reference" anywhere.

Attrecomet 2 days ago | parent [-]

Thanks for the clarification!

However, I also got confused, and just subsituted "pointer" for "reference" in my head. References, apart from smart pointers, are indeed a problem for memory safety.

aw1621107 4 days ago | parent | prev [-]

> Owning references are a part of modern C++

Maybe we're thinking of different things, but I don't think C++ has owning references, modern or not? There's regular references (&) which are definitely not owning, and owning pointers (unique_ptr and friends), but neither of those quite match Rust's &.

Attrecomet 2 days ago | parent [-]

Ah, okay, that is a good point. I was not aware of that subtle difference, and replaced "owning reference" with "owning pointer" in my mind.