All streams
Search
Write a publication
Pull to refresh
17
0.1

User

Send message

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

Конечно отсутствие клавиш Home/End плохо, но это, увы, тренд :(

Если интересует способ сравнить скорость с вариадиками и узнать насколько это будет быстрее в MSVC есть встроенный механизм для этого: https://devblogs.microsoft.com/cppblog/introducing-c-build-insights/


Последний MSVC должен поддерживать C17: https://devblogs.microsoft.com/cppblog/c11-and-c17-standard-support-arriving-in-msvc/

Было бы интересно сравнить с DryIocZero.

Для начала стоит пользоваться C++20, у которого больше свободы в использовании неявного перемещения.
До него не каждый return перемещал.


https://oleksandrkvl.github.io/2021/04/02/cpp-20-overview.html#more-impl-moves

Я пользуюсь гитом через различные GUI и делаю любые сложные действия произвожу легко и непринуждённо.
В то время как коллеги мучаются с командами из консоли.


В консоли тоже периодически бывает работаю с гитом и для этого очень советую oh-my-zsh или oh-my-posh.

Так компилятор же вам и сообщает в вашем примере, что что-то не то:

(5): warning C4305: 'initializing': truncation from 'unsigned __int64' to 'short'
<source>(5): warning C4309: 'initializing': truncation of constant value
</code>

Мы ведь не игнорируем предупреждения компилятора, не так ли ? ;)
Без приведения типа будет предупреждение даже с constexpr: gcc.godbolt.org/z/EeWsGna3E

А с массивом С эти приседания не нужны.
Бывают такие функции, которые принимают размер не в size_t :)

Для сред JetBrains есть полезные дополнения, которые сами подскажут горячие клавиши для того или иного действия.


https://plugins.jetbrains.com/plugin/7345-presentation-assistant


https://plugins.jetbrains.com/plugin/9792-key-promoter-x

Конечно в коде не будет так, а будет макрос "_countof", который и проверяет тип на массив.
Легко сказать, что нужно приведение типа каждый раз, но это банально неудобно.
Вот бы было указано в стандарте, что std::array должен быть двоично идентичен C-array тогда можно было бы использовать std::array не боясь неправильного размещения в памяти.
А так его можно использовать только там где это не критично.

Кстати, у std::array есть ещё одна неприятная особенность.
std::array::size имеет тип size_t, а sizeof(a)/sizeof(a[0]) это константа, которую компилятор легко превращает в нужный тип.
Итого в MSVC получаем предуреждение об усечении типа:

std::array<int, 1> a;
short size_a = a.size(); // warning C4267: 'initializing': conversion from 'size_t' to 'short', possible loss of data

int b[1];
short size_b = sizeof(b)/sizeo(b[0]); // OK

https://m.habr.com/ru/company/auriga/blog/539760/#comment_22898618


Вполне возможно, что в простых случаях компилятор всё оптимизирует, но нет требований, чтобы это было всегда.

К сожалению стандарт не требует размер std::array чтобы был равен размеру массива.
sizeof(array<int,10>) >= sizeof(int[10])

Это знакомо, я уже думал, что-то ещё упустил.

С UnsafeBinaryFormatterSerialization=false нужно быть острожным.
Внезапно продукты MS (хе-хе) не работают без него. Т.е. всё собирается без проблем но падает самым непредсказуемым образом: github.com/PowerShell/PowerShell/issues/14054

Ну если ломать API и жизнь всем пользователям то можно рефакторить и поделить на части с зависимостями от WinForms и без.
Но это радикальный шаг, а хотелось решения без изменения кода.

Конечно получится.
Делаем приложение на 3.5.
Прописываем такой app.exe.config:

<configuration>
 <startup>
    <supportedRuntime version="v4.0" />
    <supportedRuntime version="v2.0.50727"/>
 </startup>
</configuration>


Приложение запускается с .NET 4 или выше если находит либо с .NET 3.5 (рантайм 2.0).
Это решение работает уже многие годы.

В небольших очень редких случаях есть различное поведение между 3.5 и 4.0.
Ещё будет хорошей опцией отключить неиспользуемые фичефлаги дотнета. Это ещё минус несколько мегабайт.

Не подскажите какие?
Может я не всё включил у себя.
Промахнулся с типом. Это был System.Windows.Media.Imaging.BitmapSource.

Information

Rating
2,951-st
Registered
Activity