News for hackers. Stuff that matters.
Re:Goodbye C++, Hello C by jolux on Saturday June 26, 2021 @12:00AM (#27638975)
I fail to understand how that’s more explicit to be perfectly honest. If it’s hard to resolve where overloads are coming from then that’s a problem but otherwise it just seems more verbose for no benefit. Addition and multiplication are the operations in use here, why shouldn’t we use their operators to represent them?
Re:Goodbye C++, Hello C by gravypod on Saturday June 26, 2021 @12:03AM (#27638994)
In situations where the output's shape changes based on the operation this can be helpful.

    auto accumulate = ...;
    auto a = ...
    auto b = ...
    auto result = a*b;
    for (int row = 0; row < a.rows) {
        accumulate += result[row]
    }

This expression might be entirely valid when a and b are both 2x2 but then becomes incorrect when there's a different shape in b.
Re:Goodbye C++, Hello C by CyberDildonics on Saturday June 26, 2021 @12:02PM (#27642993)
Do you mean type instead of shape? I also don't know what you mean by incorrect. C will also create casts when using two different number types in a math operation.
Re:Goodbye C++, Hello C by gravypod on Saturday June 26, 2021 @01:44PM (#27644062)
For matrix and quaternions multiplication does not output the same type as the input.

For example:

    int a = 1;
    
    a + a = 2; (int)
    a * 2 = 2; (int)


    auto ma = matrix<2, 4>();
    auto mb = matrix<4, 1>();
 
    ma * a  is matrix<2, 4>
    ma * ma is not possible
    ma * mb is matrix<2, 1>

Compilers used to be very bad at telling you what was going on here if you, for example, changed `<2, 4>` to `<3, 4>` or something. g++ now handles it pretty well: https://hastebin.com/idemopikag
Re:Goodbye C++, Hello C by CyberDildonics on Saturday June 26, 2021 @04:17PM (#27645439)
Your original comment was about something being incorrect, now you are talking about error messages, but I don't think either has to do with operator overloading.
Re:Goodbye C++, Hello C by duped on Saturday June 26, 2021 @12:09AM (#27639029)
There is more than one definition of a matrix or vector product and whichever one is most obvious can be contextual.
Re:Goodbye C++, Hello C by humanrebar on Saturday June 26, 2021 @08:31AM (#27641290)
I like operator overloading, but it is susceptible to argument dependent lookup while member methods are not. The syntax is literally more explicit about what logic is being called.