> Во-первых getter для свойства изменяет состояние объекта — это ужасная практика. Это подстава.
Сам fluent интерфейс это подстава, но мы же эмулируем синтаксический сахар, а какими путями — не важно. Blackbox, зато работает.
> прикольно, но чем отличается от shared_ptr c deleter?
тем, что shared_ptr всегда выделяет память в куче, плюс поддерживает счётчик ссылок. unique_ptr — тоже выделяет память под объект. scoped_ptr (boost?) с deleter'ом был бы аналогом, вот только есть разница между ha::scoped_resource<int, char*, int> fd(::open, filename.c_str(), O_RDONLY, ::close);
и scoped_ptr<int> fd(::open(filename.c_str(), O_RDONLY), [](int fd_) { ::close(fd_); });
Первое лаконичнее, хотя вариант с «func, arg1, arg2» может сбить с толку без привычного «func(arg1, arg2)».
*buf = 0 тогда уж. коротко и ясно.
Правда, я не знаю, как читается из serial — если без завершающего нуля, то тогда нужно самому его вставлять вместо strlen:
int n = read(fd, buf, sizeof buf);
buf[n] = 0;
if(n > 0)…
Но судя по всему, смотреть, что в buf, вообще не нужно и оперировать лишь условием: «прочитали ли что-то или нет» (n > 0).
Начали за здравие (С++14), а закончили за упокой (Qt). То ли автор забыл, что он собирался рассказать про С++14, то ли выделил это целым абзацем просто по невнимательности.
Просто ОС переворачивает символы в слове, чтобы оно читалось справа налево. А при выделении символа курсором он «возвращается на место», в порядке ввода.
Они не отключили функцию восстановления, а просто редиректят с той страницы.
Если ты в ручную POST'ишь на их страницу поле email (как было в старой форме) — то она по прежнему восстонавливает пароль!
Н-да, какой эпический баг и не менее эпический фикс его.
Сам fluent интерфейс это подстава, но мы же эмулируем синтаксический сахар, а какими путями — не важно. Blackbox, зато работает.
тем, что shared_ptr всегда выделяет память в куче, плюс поддерживает счётчик ссылок. unique_ptr — тоже выделяет память под объект. scoped_ptr (boost?) с deleter'ом был бы аналогом, вот только есть разница между
ha::scoped_resource<int, char*, int> fd(::open, filename.c_str(), O_RDONLY, ::close);
и
scoped_ptr<int> fd(::open(filename.c_str(), O_RDONLY), [](int fd_) { ::close(fd_); });
Первое лаконичнее, хотя вариант с «func, arg1, arg2» может сбить с толку без привычного «func(arg1, arg2)».
как лаконично.
Правда, я не знаю, как читается из serial — если без завершающего нуля, то тогда нужно самому его вставлять вместо strlen:
int n = read(fd, buf, sizeof buf);
buf[n] = 0;
if(n > 0)…
Но судя по всему, смотреть, что в buf, вообще не нужно и оперировать лишь условием: «прочитали ли что-то или нет» (n > 0).
Сильно.
Ждём…
Н-да, какой эпический баг и не менее эпический фикс его.
© Windows Metro…