Re: тянут в кланг и стандарт strong typedef
От: vdimas Россия  
Дата: 09.02.26 20:25
Оценка:
Здравствуйте, Великий Мессия, Вы писали:

ВМ>https://discourse.llvm.org/t/rfc-clang-adding-strong-typedefs/88843


Non-strong → Strong: Compatible (initialization)

UserId uid = 42; // OK: implicit conversion from int
Strong → Non-strong: Incompatible

UserId uid = 42;
int i = uid; // ERROR

А почему не наоборот-то?

По-идее, нам должно быть легко получать числовые значения юнитов (для печати/логирования) и сложно инициализировать юниты из чисел и других юнитов, в этом был смысл похожих библиотек-оберток (эксперименты из прошлого).

Парень по ссылке немного напутал, ИМХО. ))
И пример у него плохой.

Здесь должно быть понятней, почему удобней наоборот:
[[strong]] typedef double Distance;

Distance d1 = 42km;
Distance d2 = 42m;
Distance d3 = 42mm;
Distance d4 = 42; // ???
Отредактировано 09.02.2026 21:56 vdimas . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.