Viacheslav
Это всё, что ты имеешь право делать с opaque type.
Constantine
Зачем? Это POD тип.
Ага, тогда скажите, как для него определено сравнение
Constantine
Неверно. Я имею право копировать значение и сравнивать на равенство
Alexander "SonnySlave"
Зачем? Это POD тип.
отвыкайте. скоро не будет pod типов
Viacheslav
Два handle. На некоторых платформах стуруктуры.
Viacheslav
Удачи дальше тупить.
Constantine
void f(HWND h) { } void g() { HWND h = NULL; f(h); //копирование, корректный код if (h == h) // сравнение, корректный код }
Constantine
Удачи в универе)
Viacheslav
Ой идиот. Приезжай в Лондон, покажу тебе наш "универ".
Constantine
Тогда соболезную вашей компании
Stanislav
Зачем? Это POD тип.
подов больше нет)
Alexander "SonnySlave"
так, я не понял. в чём спор?
Alexander "SonnySlave"
подов больше нет)
пока что есть
Stanislav
ну или не будет скоро
Stanislav
пока что есть
ну я про С++20
Constantine
так, я не понял. в чём спор?
Спор в том, что надо observer_ptr переименовать в pointer_wrapper а его конструирующий метод в std::ref
Constantine
И еще, видимо, добавить класс handle_ptr или opaque_ptr, который не будет допускать разыменование
Stanislav
*все знают что это винда*
Viacheslav
Тогда соболезную вашей компании
Соболезнуй дальше. Интервью в Блумберг ты бы уже не прошёл, радуйся. После тупой уверенности, что opaque type можно как указатель рассматривать.
Alexander "SonnySlave"
Evgenii
Ой идиот. Приезжай в Лондон, покажу тебе наш "универ".
иногда я забавы ради ищу людей делающих громкие заявления в инете
Evgenii
и становится страшно
Evgenii
и хочется сменить фамилию) </offtop>
Constantine
Потому что меня напрягают люди, которые не понимают, что логически HANDLE это и есть указатель во всех реализациях просто потому, что у них абсолютно одинаковая семантика и нет ни одной причины использовать промежуточный remap
Alexander "SonnySlave"
А я как-нибудь дальше тут поработаю с теми, кто так не думает.
хм-хм. ЕМНИП, в Лондонском офисе работают Vittorio Romeo и John Lakos
Viacheslav
Работают.
Constantine
если одна отдельно взятая ОС будет просто жрать ресурсы и не реализовывать pthread_t как указатель, меня это совершенно не волнует ;)
Viacheslav
Ну весело, что уж.
Constantine
интересно, вы понимаете, что индекс массива это тоже указатель?
Viacheslav
Какое отношение индекс массива имеет к opaque types in C APIs?
Alexander "SonnySlave"
Так. Сказано, что может быть структурой. Всё, значит ничерта не указатель. Не понимаю, откуда спор на ровном месте
Alexander "SonnySlave"
не важно, кто и как реализовывает. Implementation-defined. Мы опираемся на стандарт, а не на то, как все пишут
Berkus
но вообще лучше weak_unique_ptr<HANDLE> использовать!
Constantine
Так. Сказано, что может быть структурой. Всё, значит ничерта не указатель. Не понимаю, откуда спор на ровном месте
Я считаю, что указатель это Nullable EqualityComparable CopyConstructible сущность с определенной механикой копирования
Stanislav
Viacheslav
Если где-то там оно реализовано через указатели, то это ещё ни о чём не говорит.
Alexander "SonnySlave"
Constantine
Твоё определение эквивалнтно определению из Стандарта C/C++?
Х3, но все указатели C++, кроме unique_ptr, этому соответствуют)
Berkus
Я считаю, что указатель это Nullable EqualityComparable CopyConstructible сущность с определенной механикой копирования
так так, а как вы относитесь к различиям в механике копирования различных указателей? unique_ptr например, не копируемый и не CopyConstructible
Viacheslav
иногда я забавы ради ищу людей делающих громкие заявления в инете
Ну мне о своей работе скрывать нечего. Больше двух лет в Блумберге, старый профиль на LinkedIn висит, пишем на С++ каждый день, на трёх Unix системах.
Viacheslav
Поэтому от таких заявлений про resource handles волосы на заду встают дыбом.
Berkus
это у тебя одинаковые дыры в голове что по бокам что спереди, и семантика там тоже так себе
Constantine
это у тебя одинаковые дыры в голове что по бокам что спереди, и семантика там тоже так себе
смотри, виртуальный предок класса представляешь как реализуется?
Constantine
не имеет к HANDLE никакого отношения
зато имеет отношение к композиции и unique_ptr
Berkus
еще раз - у HANDLE и указателя разная семантика, хотя бы потому что ты можешь произвольно двигать и менять underlying объект не меняя HANDLE, с указателем это не работает
Alexander "SonnySlave"
можешь чекать версию, слать запрос на сервер с проверкой новой версии. потом выкачивать тем же курлом сведий архив
Berkus
libsparkle кажется это называется
Berkus
Вот это не понял.
ну разбирайся
Constantine
ну разбирайся
просто утверждение забавное, учитывая, что win-h будет все HANDLE объявлять указателями)
Viacheslav
Berkus
хм... я что, дебил?
Constantine
еще раз - у HANDLE и указателя разная семантика, хотя бы потому что ты можешь произвольно двигать и менять underlying объект не меняя HANDLE, с указателем это не работает
Berkus
https://sparkle-project.org/ https://winsparkle.org/
Viacheslav
Ты таким образом рассчитываешь на implementation defined кишки.
Тогда вызывай free для handle, раз это просто указатель.
Constantine
Тогда вызывай free для handle, раз это просто указатель.
Прочитай определение семантического указателя выше
Constantine
Не любому указателю можно вызвать free
Constantine
int x[2]; int * y = x; //удоляй
Berkus
int x[2]; int * y = x; //удоляй
удолил, дальше что
Constantine
все поломалось
Berkus
потом еще CloseHandle(y) вызвал
Berkus
один хуй это же HANDLE
Berkus
ПРАВИЛЬНО, ШЕФ?
Constantine
Я не говорю, что любая апи принимает любой указатель
Constantine
кажется, int * x = new int[2]; free(x); тоже будет ниочень
Constantine
Но я говорю, что, скажем, итератор это указатель