19 #ifdef FRAMEWORK_NO_BOOST
20 #error "Not implemented"
25 #include <boost/preprocessor/config/limits.hpp>
26 #include <boost/preprocessor/repetition/repeat.hpp>
27 #include <boost/preprocessor/punctuation/comma_if.hpp>
28 #include <boost/preprocessor/iteration/local.hpp>
33 #ifndef FRAMEWORK_VARIADIC_SWITCH_LIMIT
34 #define FRAMEWORK_VARIADIC_SWITCH_LIMIT 20
36 #if FRAMEWORK_VARIADIC_SWITCH_LIMIT > BOOST_PP_LIMIT_REPEAT
37 #error "Variadic switch limit cannot exceed BOOST_PP_LIMIT_REPEAT"
41 #if FRAMEWORK_VARIADIC_SWITCH_LIMIT <= 0
42 #error "Invalid variadic switch limit"
49 template <
typename CaseList>
50 struct variadic_switch_return_impl;
101 decltype(handler(std::forward <Args> (args)...))
103 return detail::variadic_switch_return_impl <CaseList>::run(
104 std::forward <Handler> (handler),
105 std::forward <Index> (index),
106 std::forward <Args> (args)...);
110 #include <framework/common/variadic_switch_return.inl>