Stanislav
допиливай)
Igor
ну тебе надо sysroot менять д
буду копать в ту сторону, да, но складывается впечатление что его нужно менять чуть ли не перекомпиливая либкланг
Igor
или забинди на время в /usr/include
это феерический костыль но в качестве временного решения оно сработало на ура, спасибо
Berkus
буду копать в ту сторону, да, но складывается впечатление что его нужно менять чуть ли не перекомпиливая либкланг
Сама либа вроде никаких путей не хардкодит, смотри какой драйвер ты используешь.
Александр
а никого не беспокоит, какой размер примет стандарт после внедрения графики, нетворка, ranges, format и прочих либ? не помню, чтобы когда-то в язык впихивали такие крупные либы. в основном всякие мелкие классы из буста - smart ptr, any/optional/variant и прочие
Igor
ну поделят на тома, и то вряд ли
Alexander "SonnySlave"
лол, а нам то какое дело до размера стандарта?
Александр
а как это должно беспокоить?
борцов за экологию - слишком много бумаги придётся тратить
Александр
да нет, мне-то тоже всё равно, какого размера стандарт. просто любители холиваров любят тыкать плюсовиков в размер стандарта и говорить "уууу, намудрили". на самом деле вопрос скорее риторический/дискуссионный
Alexander "SonnySlave"
ну и пусть тыкают, какая нам разница от мнения умственноотсталых?
Aidar
std разделить
Alexander "SonnySlave"
не переживай, будет std2
Aidar
ненадо
Alexander "SonnySlave"
будет и у нас разброд аки в питоне
Aidar
я этот не до конца знаю
Egor
> gps_clock (C++20) Clock for GPS time а глонасс будет?
Alexander "SonnySlave"
> gps_clock (C++20) Clock for GPS time а глонасс будет?
это надо через Антона пробивать)
Egor
китайцы ещё должны подключиться
Egor
странно, что такое пролезло
Aidar
должно быть пофигу же
🐙 Antony
странно, что такое пролезло
Это просто часы, которые не учитывают високосные секунды
Alexander "SonnySlave"
странно назвали 😊
🐙 Antony
Название и правда очень, но оно устоявшееся, мировое
Egor
Это просто часы, которые не учитывают високосные секунды
чем это обосновано? что разработчики гпс не стали их учитывать в самом начале, а теперь нельзя ломать все гпс устройства?
🐙 Antony
Типа того
Oleg
Язабан
Anatoly
как скажешь :)
Matwey
Как вариант
Matwey
> gps_clock (C++20) Clock for GPS time а глонасс будет?
Глонасс в UTC время хранит ЕМНИП.
Matwey
Но я не помню детали реализации, как там с учетом ОТО и этим делами
Matwey
чем это обосновано? что разработчики гпс не стали их учитывать в самом начале, а теперь нельзя ломать все гпс устройства?
это одна из изспользуемых шкал времени. UTC, зафиксированное по состоянию на 80-е года, т.е. некоторое количество високосных секунд по отношению к TAI туда добавлено, но всё что было после - не учитывается. как обычно бывает в таких случаях, нормальному программисту это всё не нужно.
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
ну или каст в какойнить signed тип сначала но вроде это уб
Aidar
хотя какая вам разница
Aidar
(int16_t)((0xFD<<8)|0xF6)
Anonymous
(((-1<<8)|0xFD)<<8)|0xF6
спасибо. а по какому принципу вы это делали? где можно почитать?
Aidar
(int16_t)((0xFD<<8)|0xF6)
поправьте меня если это не уб
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
...я хотел сказать "вместо enable_if", потом присмотрелся и не понял зачем он вообще там.
это код пытается преобразовать так, как будет делать стандартный 8086... процессор
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