Size: a a a

2020 August 02

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Dmitriy
Вернуть pair<optional, ErrorCode>?
Ну это немного изврат всё ж.
источник

Е

Егор in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Это я видел, но я имею в виду STL.
Стало быть, нет?
ответ выше не подходит?
источник

AF

Aidar Fattakhov in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Это я видел, но я имею в виду STL.
Стало быть, нет?
нет
источник

AF

Aidar Fattakhov in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Ну это немного изврат всё ж.
пиши на расте
источник

AF

Aidar Fattakhov in supapro.cxx
раст то не изврат наверное
источник

Е

Егор in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Ну это немного изврат всё ж.
а помоему удобно, можно байндингами раскладывать тип auto&& [result,ok] = foo(); if (ok) { ...}
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Егор
а помоему удобно, можно байндингами раскладывать тип auto&& [result,ok] = foo(); if (ok) { ...}
Что такое байдинги?
Тогда можно и variant использовать, по идее.
источник

Е

Егор in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Что такое байдинги?
Тогда можно и variant использовать, по идее.
structured bindings
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
С этим более или менее ясно.
Теперь подскажите, как в плюсах можно реализовать цепочку действий, которая вернёт результат в случае успеха, либо ошибку, если где-то посередине что-то пошло не так.

Ну что-то типа:

 std::optional<int> result;
 do {
   // something
   if (!code1()) { break; }
   // something
   if (!code2()) { break; }
   // something
   if (code3()) { result = get(); }
 } while (false);

 if (result) {
   // success code
 } else {
   // fail code
 }

Только как-то более красиво :)
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Не оборачивая это в функцию, разумеется.
источник

Е

Егор in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
С этим более или менее ясно.
Теперь подскажите, как в плюсах можно реализовать цепочку действий, которая вернёт результат в случае успеха, либо ошибку, если где-то посередине что-то пошло не так.

Ну что-то типа:

 std::optional<int> result;
 do {
   // something
   if (!code1()) { break; }
   // something
   if (!code2()) { break; }
   // something
   if (code3()) { result = get(); }
 } while (false);

 if (result) {
   // success code
 } else {
   // fail code
 }

Только как-то более красиво :)
https://t.me/supapro/719707
буквально пример с гитхаба
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
То есть там есть как раз пример для кода такого рода? :))
источник

Е

Егор in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
То есть там есть как раз пример для кода такого рода? :))
tl::expected<image,fail_reason> get_cute_cat (const image& img) {
   return crop_to_cat(img)
          .and_then(add_bow_tie)
          .and_then(make_eyes_sparkle)
          .map(make_smaller)
          .map(add_rainbow);
}
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
И туда можно лямбды пихать, в принципе.
Ок, спасибо, гляну...
Хотя не могу сказать, что это капец какая красота, но видимо, ничего лучше нет, так ведь?
источник

AF

Aidar Fattakhov in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
И туда можно лямбды пихать, в принципе.
Ок, спасибо, гляну...
Хотя не могу сказать, что это капец какая красота, но видимо, ничего лучше нет, так ведь?
у тебя предвзятое отношение
источник

AF

Aidar Fattakhov in supapro.cxx
стоит сначала сформировать требования красоты
источник

AF

Aidar Fattakhov in supapro.cxx
Aidar Fattakhov
стоит сначала сформировать требования красоты
типа чего не нравится то?
источник

Е

Егор in supapro.cxx
это ж с++20
источник

O

Ofee in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
С этим более или менее ясно.
Теперь подскажите, как в плюсах можно реализовать цепочку действий, которая вернёт результат в случае успеха, либо ошибку, если где-то посередине что-то пошло не так.

Ну что-то типа:

 std::optional<int> result;
 do {
   // something
   if (!code1()) { break; }
   // something
   if (!code2()) { break; }
   // something
   if (code3()) { result = get(); }
 } while (false);

 if (result) {
   // success code
 } else {
   // fail code
 }

Только как-то более красиво :)
Плюсовики — известные любители do-нотации, так что есть один c С++20,  если написать немного библиотечного кода...
источник

ЗВ

Захар Виноградов... in supapro.cxx
Спасибо! Только теперь момент с выводом не работает(
источник