🐙 Antony
Stanislav
Alexander "SonnySlave"
Stanislav
допиливай)
Berkus
Igor
ну тебе надо sysroot менять д
буду копать в ту сторону, да, но складывается впечатление что его нужно менять чуть ли не перекомпиливая либкланг
Berkus
Александр
а никого не беспокоит, какой размер примет стандарт после внедрения графики, нетворка, ranges, format и прочих либ?
не помню, чтобы когда-то в язык впихивали такие крупные либы. в основном всякие мелкие классы из буста - smart ptr, any/optional/variant и прочие
Alexander "SonnySlave"
Igor
ну поделят на тома, и то вряд ли
Alexander "SonnySlave"
лол, а нам то какое дело до размера стандарта?
Nik
Alexander "SonnySlave"
Александр
да нет, мне-то тоже всё равно, какого размера стандарт. просто любители холиваров любят тыкать плюсовиков в размер стандарта и говорить "уууу, намудрили".
на самом деле вопрос скорее риторический/дискуссионный
Alexander "SonnySlave"
ну и пусть тыкают, какая нам разница от мнения умственноотсталых?
Aidar
Aidar
std разделить
Alexander "SonnySlave"
не переживай, будет std2
Aidar
ненадо
Alexander "SonnySlave"
будет и у нас разброд аки в питоне
Aidar
я этот не до конца знаю
Egor
> gps_clock (C++20) Clock for GPS time
а глонасс будет?
Alexander "SonnySlave"
Egor
китайцы ещё должны подключиться
Egor
странно, что такое пролезло
Aidar
Aidar
должно быть пофигу же
Alexander "SonnySlave"
странно назвали 😊
🐙 Antony
Название и правда очень, но оно устоявшееся, мировое
🐙 Antony
Типа того
Oleg
Язабан
Anatoly
как скажешь :)
Matwey
Как вариант
Matwey
Matwey
Но я не помню детали реализации, как там с учетом ОТО и этим делами
Anonymous
Господа привет. Помогите нубу из
F6FD hex
получить
-522 dec.
int a = 0xFD;
int b = 0xF6 << 8;
int res = a | b;
у меня выводит
-10
. что не так? А если делать так
unsigned int res2 = (unsigned char) 0xFD | (unsigned char) 0xF6 << 8;
то выводит
65014
, а требуется
-522
Aidar
вы попутали
Aidar
и попутали вы endidanness
Aidar
FDF6 вот -522
Anonymous
FDF6 вот -522
да но в файле идет наоборот я сначала читаю младший байт потом старший. их надо перевернуть и вывести -522
Aidar
Aidar
ну или каст в какойнить signed тип сначала но вроде это уб
Aidar
хотя какая вам разница
Aidar
(int16_t)((0xFD<<8)|0xF6)
Aidar
Anonymous
Aidar
факт что работает ничего не значит
Aidar
хм вроде не уб
Anatoly
http://eel.is/c++draft/conv.integral#3 - implementation defined
Constantine
а почему нельзя просто выполнить инверсию в unsigned?
Constantine
а, понял
Constantine
в общем-то я не понимаю, как не пройти в этой операции UB, не написать ифа и не использовать расширение типа
Constantine
чета сложно вижаку объяснять
Anatoly
в VC++ другие соглашения вызова. Всёравно оно заинлайнится и компилятор выкинет лишнее.
Constantine
да это еще и не правильно
Constantine
template <typename T, typename = std::enable_if_t<std::is_unsigned<T>::value>, typename R = std::make_signed_t<T>>
constexpr R convert(T in) {
return (in > static_cast<T>(std::numeric_limits<R>::max()))
? (
in == static_cast<T>(std::numeric_limits<R>::max()) + 1
? std::numeric_limits<R>::min()
: -static_cast<R>(-in)
)
: static_cast<R>(in)
;
}
а в такой версии вижак ифать начинает
Anatoly
зачем вообще все эти ветвления, используйте обычный каст - будет impl. def. Найдёте платформу где другое поведение - воткнёте #if
Constantine
чтобы продемонстрировать замечательность ISO C++, очевидно
Anatoly
тогда надо if constexpr
Constantine
?
Constantine
как это помогает?
Constantine
мне надо в явном виде рассматривать три случая
Anatoly
...я хотел сказать "вместо enable_if", потом присмотрелся и не понял зачем он вообще там.
Anatoly
м... чето я вообще не понимаю что этот код делает
Constantine
convert<unsigned short,void,short>, COMDAT PROC
mov eax, 32767 ; 00007fffH
cmp cx, ax
movsx eax, cx
ret 0
Constantine
чета ржу
Constantine
вроде флаги не влияют на movsx
Constantine
Constantine
template <typename T, typename = std::enable_if_t<std::is_unsigned<T>::value>, typename R = std::make_signed_t<T>>
constexpr R convert(T in) {
return (in > static_cast<T>(std::numeric_limits<R>::max()))
? - static_cast<R>((-in) - static_cast<R>(1)) - static_cast<R>(1)
: static_cast<R>(in)
;
}
Constantine
вот такая текущая версия
Constantine
enable_if очевидно запрещает T быть каким-либо типом, кроме unsigned
Anatoly
static_assert же, зачем тут SFINAE
Constantine
я не понимаю альтернатив
Constantine
представьте, что входной параметр T имеет тип char