On Monday, 16 May 2022 at 21:20:43 UTC, Ali Çehreli wrote:
On 5/16/22 10:35, Johan wrote:

> What is very problematic is that you cannot see the
difference in
> syntax. In my opinion it would have been much better if the
language
> required using a `*` for class types: for example `Foo* a`,
and `Foo a`
> would simply give a compile error.

I see. Is it really a high mental load without the syntax? I seems to just work in my programs but perhaps because I am the main programmer and classes are very rare anyway.

Also, same syntax is said to help with template code but perhaps the argument there is a template must be written either for value types or reference types? I am not sure.

`Foo a = b;`
What does that do?
A benefit of statically typed languages is that you know what simple code will do. But for this simple statement, you actually don't know. Perhaps it is a copy, perhaps not. I understand that also structs can have reference-like semantics with copies if they contain pointers, but it is strange that the language at a fundamental basic level has this ambiguity of user types. Indeed the same-syntax template argument is bogus, for exactly this reason that you don't know what the code is doing. If the language deems it important enough to separate value types from reference types, then why does it allow passing _both_ to `foo(T)(T t)` ?

-Johan






Reply via email to