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
Обсуждают сегодня