Opened 6 years ago
Closed 6 years ago
#270 closed ожидается проверка (задача сдана)
Д/З №4. function
Reported by: | malyutin.danila | Owned by: | rutsky,grabovoy.philipp |
---|---|---|---|
Priority: | проверка | Milestone: | ha4-milestone2 |
Component: | HA#4 function | Version: | |
Keywords: | Cc: |
Description
Change History (8)
comment:2 Changed 6 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Tested revision 589 by malyutin.danila.
Main tests
test | stage | result | info | log |
---|---|---|---|---|
FAILURE | ||||
Common header used in some tests: common.h
comment:3 Changed 6 years ago by
Tested revision 624 by malyutin.danila.
All tests passed. Good job!
comment:4 Changed 6 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:5 Changed 6 years ago by
Milestone: | ha4-milestone1 → ha4-milestone2 |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Замечания:
- Наследуйтесь от
std::exception
публично:
class bad_function_call : public std::exception { };
- В шаблонном конструкторе SFINAE лучше реализовать через шаблонный аргумент со значением по умолчанию (он точно будет оптимизирован, а вот дополнительный аргумент, пусть и со значением по умолчанию, не обязательно):
template <typename F, typename = typename std::enable_if_t<std::is_convertible<F, FuncType>::value>> function(F f) : call_(f), target_(nullptr) { }
- Можно обойтись без SFINAE для разбора случая, когда function конструируется от сырой функции и от функтора, сделав один нешаблонный конструктор от сырой функции, и один шаблонный конструктор, который будет принимать функтор.
- В следующих двух
operator=
не должно быть необходимости --- соответствующие конструкторы implicit, и при попытке присводить в function, например,nullptr
, должен вызваться соответствующий конструктор иoperator=(function &&)
:
function &operator=(std::nullptr_t) { call_ = nullptr; target_.reset(); return *this; } template <typename F> function &operator=(F &&f) { function(std::forward<F>(f)).swap(*this); return *this; }
Version 0, edited 6 years ago
by
(next)
comment:6 Changed 6 years ago by
Tested revision 712 by malyutin.danila.
All tests passed. Good job!
comment:7 follow-up: 8 Changed 6 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
- Исправил
- Исправил
- Я хотел, чтобы ещё лямбды, которые к указателю на функцию приводятся, эффективно хранились.
comment:8 Changed 6 years ago by
Resolution: | → задача сдана |
---|---|
Status: | new → closed |
Replying to malyutin.danila:
- Я хотел, чтобы ещё лямбды, которые к указателю на функцию приводятся, эффективно хранились.
Да, это хороший use case, я про него забыл.
Решение зачтено.
Note: See
TracTickets for help on using
tickets.
Ждём автотестов.