/
githubmirror
/
omim
Обзор
Документация
Войти
/
githubmirror
/
omim
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
android-95
base/control_flow.hpp
46 строк
1 KB
VladiMihaylenko
Using _t suffix instead of ::type in whole project + using std:: somewhere.
06 мар 2018, 12:17
06 мар 2018, 12:17
a0e432b
Код
Авторство
О чём код?
#pragma once #include <type_traits> #include <utility> namespace base { // This enum is used to control the flow of ForEach invocations. enum class ControlFlow { Break, Continue }; // A wrapper that calls |fn| with arguments |args|. // To avoid excessive calls, |fn| may signal the end of execution via its return value, // which should then be checked by the wrapper's user. template <typename Fn> class ControlFlowWrapper { public: template <typename Gn> explicit ControlFlowWrapper(Gn && gn) : m_fn(std::forward<Gn>(gn)) { } template <typename... Args> std::enable_if_t<std::is_same<std::result_of_t<Fn(Args...)>, base::ControlFlow>::value, base::ControlFlow> operator()(Args &&... args) { return m_fn(std::forward<Args>(args)...); } template <typename... Args> std::enable_if_t<std::is_same<std::result_of_t<Fn(Args...)>, void>::value, base::ControlFlow> operator()(Args &&... args) { m_fn(std::forward<Args>(args)...); return ControlFlow::Continue; } private: Fn m_fn; }; } // namespace base