Re[18]: А С++ то схлопывается...
От: so5team https://stiffstream.com
Дата: 02.11.19 13:26
Оценка:
Здравствуйте, Pzz, Вы писали:

S>>И это мы еще не рассматривали такие мощные инструменты для создания абстракций, как классы и шаблоны. Например, как вы в чистом C выразите абстракцию "значение в заданном диапазоне", которая на C++ делается влет простым шаблоном вроде:


Pzz>Я что-то не понял, а операции + и — для этого constrained_value современный компилятор сам выведет, или их тоже надо руками расписать?


В том-то и дело, что для простейшего случая это и не нужно. В нем есть операция приведения к типу T, поэтому показанный тривиальный constrained_value можно использовать вот так, например:
my_range get_current_value() {
   my_range raw = read_raw_value(); // Гарантия того, что в raw допустимое значение.
   short tmp = static_cast<short>(raw) * 10; // Вот тут все гарантии потерялись.
   if(specific_moon_phase())
     tmp += 135;
   if(some_time_of_day())
     tmp /= 3;
   return my_range{tmp}; // Здесь появляется гарантия того, что возвращается допустимое значение.
}


Теперь хотелось бы посмотреть на это в чистом С.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.