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