0
考慮下面的代碼:獲取參數類型C99的可變參數函數
template <class... Args>
struct function_arguments
{
using tuple = std::tuple<Args...>;
};
template <class>
struct function_traits
: function_arguments<>
{};
template <class R, class... Args>
struct type<R(Args...)>
: function_arguments<Args...>
{};
template <class R, class... Args>
struct type<R(Args... ...)>
: function_arguments<Args...>
{};
和下面的函數聲明:
int f(int x, int y, int z);
int g(int x, int y, int z, ...);
沒有問題function_traits<decltype(f())>::tuple
會返回一個元組的所有參數類型它。有沒有辦法爲C99可變參數函數做同樣的事情(提取參數... + C99可變參數類型並將所有東西放在一個元組中)?如果是這樣,怎麼樣?Ç