1#pragma once
2
3#include <tuple>
4#include <type_traits>
5
6
7template <typename T>
8struct function_traits;
9
10template <typename ReturnType, typename... Args>
11struct function_traits<ReturnType(Args...)>
12{
13 using result = ReturnType;
14 using arguments = std::tuple<Args...>;
15 using arguments_decay = std::tuple<typename std::decay<Args>::type...>;
16};
17