addOperator(KeyCode key, std::unique_ptr<T> op);
template<class Lambda>
void addOperator(KeyCode key, Lambda lambda);
Имею сейчас такое.
1) Правильно я понимаю, что
std::enable_if_t<std::is_base_of<Operator, T>::value>
с точки зрения синтаксиса - просто возвращаемый тип?
2) А куда тогда делось описание _настоящего_ возвращаемого типа void? Он тут как-то неявно подразумевается? А что если возвращаемое значение будет другое - как мне это указывать?
Это конечно вопросы скорее теоретические, но наверное было бы полезно знать, что я к себе в код засунул. Несколько материалов по сфинае нагуглил, но там все начинается слишком издалека.
1) да
1) Если условие true, то результат выражение - void, если false - ошибка SFINAE. 2) Если хочешь вместо void свой - указываешь вторым параметром метафункции enable_if_t свой тип
2. У enable_if 2 аргумента, второй void по умолчанию
Кратко и по делу можно прочитать на cppreference
Обсуждают сегодня