25 #include <boost/algorithm/string/join.hpp>
33 template <
typename... Args>
34 struct types_to_string_list_helper;
36 template <
typename First,
typename... Args>
37 struct types_to_string_list_helper<First, Args...>
39 std::list<std::string> operator()()
const
41 std::list<std::string> argsList = types_to_string_list_helper<Args...>()();
42 argsList.push_front(
fc::get_typename<
typename std::decay<First>::type>::name());
48 struct types_to_string_list_helper<>
50 std::list<std::string> operator()()
const
52 return std::list<std::string>();
56 template <
typename... Args>
57 std::list<std::string> types_to_string_list()
59 return types_to_string_list_helper<Args...>()();
67 template<
typename R,
typename... Args>
68 void operator()(
const char* name, std::function<R(Args...)>& memb )
72 std::ostringstream ss;
73 ss << std::setw(40) << std::left << fc::get_typename<R>::name() <<
" " << name <<
"(";
74 ss << boost::algorithm::join(types_to_string_list<Args...>(),
", ");
88 std::inserter(method_descriptions, method_descriptions.end()));