compiler bugs, will they ever stop harassing me?
aka another reason to never use built-in arithmetic types.
@namark Are you sure it is a compiler bug? I am not sure whenever it actually is one or not tbf
@Archivist are you a gcc alt? stop gaslighting meeee >.<
otherwise, please elaborate, good sir, what is your objection? o.O
@namark nah, I am just accustomed at how confusing the standard is
@Archivist don't make me read the standard, I'll defect report :<
The basis for my questioning here is that primitive operators in C++ are not functions, so whenever they warrant implicit conversions or not with a behaviour similar to an actual function is questionable
I will actually investigate that a bit and tell you my findings
I confirm that this is a bug of GCC linked to templates. You can circumvent that bug using concepts in a portable fashions (see here: https://godbolt.org/z/PzT9eeTj4)
@Archivist concepts are nice... the ranges and modules baggage though... also not going to use a standard that's barely not even done implemented yet so far.
The real workaround is
template<typename T, size_t D>
int operator+(int, One<T,D>);
and so on, and if that's all you needed maybe making the conversion explicit, not that gcc respects explicit
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55101
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87605
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87820
@Archivist also where is it that the user defined operators don't work, tell me so I fix my code please
@Archivist yeah, operators are generally cumbersome, but I already have some heavy machinery set up to deal with them... it's macros ok? the language left me no choice!
@namark they do work but are cumbersome and make the code harder to read which is why I would not use them
Also this bug triggers with other things for which the operator overload will not be a solution