вопрос вот в чем:
лучше сделать template<typename ErrorHandler> class A;
или
class A{ A(const std::function<void(error_t)>&); };?
я так понимаю, что если сделать шаблонный обработчик, то про PCH можно забыть, а от std::function страдает рантайм, хотя если класс упал с ошибкой, это уже не сильно-то и важно...
кто как решает эту проблему?
пс: под капотом буст, который компилируется 10-15 секунд
void(result&, error&) у меня как то так обычно получается... Можно конечно разделять, но тогда нужно два callback и возрастает стоимость их инициализации (и хранения). А так if(unlikely error) handle... return.
заворачивай в аналог expected и тащи разными ветками :)
На самом деле чаще я экономлю на аллокациях и запрос это и request и response и optional error и callback в одном лице :) там разве что уже в интерфейсах развлекаться заворачивая callback в callback.
if(!req.response) /* deal with generic errors */ else if(!ok (req.response.status)) /* deal with server error */ else /* ok */ ...
Обсуждают сегодня