Re[4]: operator int
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 24.05.25 14:55
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Тогда компилятор будет выбирать операторы в зависимости от порядка вычислений в выражениях, если ему нужно будет сложить два инта то он сложит два инта. И насколько я знаю, поправьте меня знатоки стандарта, этот порядок не всегда определен. Например, x = v + u + z — хз в каком порядке будет вычислено в итоге.


Я не большой знаток стандарта, но имхо компилятор будет вычислять точно так, как ему сказано. Порядок вычисления не определён при вычислении аргументов функции, но это другое

Если бы компилятор мог произвольно менять порядок вычисления в вырважениях, то не работали (или произвольно работали бы, на разных компиляторах по разному, и/или в зависимости от уровня оптимизации) бы подобные конструкции:
if ((a*10/10)!=a)
{
    //...
}



Но ты меня натолкнул на мысль — надо переопределить ещё все MyInt operator X(integral_type right) для интегральных типов, и сделать двухместные friend операторы MyInt operator X(integral_type left, MyInt right)[/tt] для моего MyInt.

Тогда всё будет работать как надо, и можно сделать operator integral_type() не explicit, и всё будет работать нормасик
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.