ФлеймФорумПрограммирование

Летопись багов (45 стр)

Страницы: 144 45 46 4750 Следующая »
#660
14:12, 22 июня 2024

Ghost2
> Но строгие тайпдефы будут гораздо более элегантным решением на С++.
на самом деле ты это можешь и сейчас реализовать спокойно обернув все необходимые базовые типы в шаблонную структуру в которой реализуешь необходимые запреты. И для всех нужных типов:

using s_int = strong_type<int>;
using s_bool = strong_type<bool>;

и т.д.

только это тебя не защитит от случая когда будут одинаковые типы абсолютно, поэтому named arguments даёт более высокий уровень защиты от ошибки по не внимательности.

#661
17:45, 22 июня 2024

Aroch

> только это тебя не защитит от случая когда будут одинаковые типы абсолютно
Так смысл строгих тайпдефов именно в том, чтобы

using money = int class;
using range = int class;

Друг к другу не приводились неявно, но обеспечивали функциональность int в выражениях.

#662
1:48, 23 июня 2024

Ghost2
> Так смысл строгих тайпдефов именно в том, чтобы
сейчас также можно:

using money = strong_type<int, "money">;
using range = strong_type<int, "range">;
#663
10:35, 23 июня 2024

Aroch

> сейчас также можно
Да можно, можно. Есть https://github.com/foonathan/type_safe и аналоги, я же говорил.

#664
11:09, 23 июня 2024

Ghost2
> Да можно, можно. Есть https://github.com/foonathan/type_safe и аналоги, я же говорил.
выглядит слишком переусложненным. Для базовых типов всё делается гораздо проще.

#665
12:47, 23 июня 2024

Aroch

> выглядит слишком переусложненным
По сравнению с int class конечно.

#666
12:55, 23 июня 2024

Ghost2
> По сравнению с int class конечно.
если требуется всего лишь добавить легковесный заголовок и написать strong_type<int, "new_type">; то int class не стоит того чтобы ждать пока каким то чудом он появится в языке вместо того чтобы воспользоваться собственным решением.

#667
(Правка: 10:24) 10:14, 9 июля 2024

Как достали подобные ошибки компиляции из стандартных библиотек. Когда часто собираешь софт - это норма, сразу найдёшь где косяк, т.к. поменял не много, а если долго не собирал, написал тонну кода, то хрен знает даже где потом искать, т.к. подобные ошибки никак не указывают на именно твою строчку в коде, а то, что у него чего-то там внутри не удалось проинициализировать, мне вообще должно быть до лампочки...

1>C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\include\xutility(374,54): error C2440: 'initializing': cannot convert from 'initializer list' to '_Ty'
1>C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\include\xutility(374,54): error C2440:        with
1>C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\include\xutility(374,54): error C2440:        [
1>C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\include\xutility(374,54): error C2440:            _Ty=unsigned int
1>C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\include\xutility(374,54): error C2440:        ]

upd: в данном случае это была расплата за emplace_back. Я поменял структуру вектора, а в emplace_back в одном месте добавлялся лишний параметр.

#668
14:22, 9 июля 2024

THE_MASTER
Мне тут сказали что нужен конкретный пример иначе пошлют или туда или сюда...

#669
12:28, 19 июля 2024

нашел в старом коде.

#define ABS(X) (((X) > 0) ? (X) : (-X))
+ Показать
#670
13:18, 19 июля 2024

kipar
Неправильный ответ, правильный — это функция.

#671
14:43, 19 июля 2024

Имбирная Ведьмочка
и правда, в С11 же  _Generic запилили, надо бы попробовать.

#672
17:19, 19 июля 2024

kipar
А чего не цпп, любите пострадать?

#673
22:08, 19 июля 2024

kipar

[[gnu::pure]] int foo ( int x )
{
  if (x > 0) return x;
  return -x;
}
#674
(Правка: 20 июля 2024, 1:00) 23:34, 19 июля 2024

а какое битовое представление у -0?
никогда не задумывался

а, это во float два нуля, тогда лучше без бранчинга
https://graphics.stanford.edu/~seander/bithacks.html#IntegerAbs

Страницы: 144 45 46 4750 Следующая »
ФлеймФорумПрограммирование