#pragma once #include #include namespace sqlite { namespace utility { template struct function_traits; template struct function_traits : public function_traits::type::operator())> { }; template struct function_traits : function_traits { }; /* support the non-const operator () * this will work with user defined functors */ template struct function_traits : function_traits { }; template struct function_traits { typedef ReturnType result_type; template using argument = typename std::tuple_element>::type; static const std::size_t arity = sizeof...(Arguments); }; } // namespace utility } // namespace sqlite