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可変個引数タイプを抽出し、すべてをタプルにまとめます)?もしそうなら、どのように?c

Jarod42

私が理解しているように、省略記号のタグを追加して、

struct ellipis_tag {};

template <class R, class... Args>
struct type<R(Args... ...)>
: function_arguments<Args..., ellipis_tag>
{};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数の配列の割り当てを解除するC99の可変個引数関数?

分類Dev

C99可変個引数マクロの最後の引数を取得するにはどうすればよいですか?

分類Dev

Cの可変個引数関数に引数を渡す

分類Dev

別の関数の引数として可変数と引数のタイプを持つC ++関数

分類Dev

可変個引数関数の引数をクラスインスタンスにカプセル化する

分類Dev

Cの可変個引数関数の引数から型を決定します

分類Dev

同じタイプの引数の可変個引数の数を定義する方法はありますか?

分類Dev

C ++可変個引数テンプレートパラメータの序数を取得します

分類Dev

Cで可変引数のサイズを取得しますか?

分類Dev

ベクトルのタプルに関数を適用して、要素のタプルを取得します(可変個引数テンプレート)

分類Dev

多次元可変個引数std :: arrayのルートタイプを取得する

分類Dev

C ++で引数型チェックを使用した可変個引数テンプレートを使用して、コンパイル時に関数への引数の数を取得する

分類Dev

Typed Racketの可変個引数関数のタイプは何ですか?

分類Dev

等しい引数タイプを持つ可変個引数テンプレート関数

分類Dev

可変個引数C関数のnull

分類Dev

Cの可変個引数関数

分類Dev

PostgreSQLでは、異なるタイプの引数を受け入れる可変個引数関数をどのように宣言できますか?

分類Dev

関数ポインタへの可変個引数関数

分類Dev

可変個引数マクロ内のC99互換のネストされた呼び出し

分類Dev

関数ポインタ引数の可変個引数テンプレート引数の推定

分類Dev

テンプレート可変個引数関数を使用して、複数の引数を別の関数に渡します

分類Dev

可変個引数のタイプに応じて決定します

分類Dev

可変個引数テンプレートを使用してC ++で関数ポインタをラップします

分類Dev

Cでの引数展開を使用したカスタム印刷関数の可変個引数マクロ

分類Dev

可変個引数引数タイプを使用したテンプレートの複数の可変個引数継承

分類Dev

引数をインプレースでソートするC ++可変個引数関数

分類Dev

関数ポインタを介して可変個引数関数に渡されたパラメータは、その値を変更します

分類Dev

Cの可変個引数関数でパラメーターとして渡されたvoidポインターをどのように操作しますか

分類Dev

Cで可変個引数関数の呼び出しを転送する

Related 関連記事

  1. 1

    複数の配列の割り当てを解除するC99の可変個引数関数?

  2. 2

    C99可変個引数マクロの最後の引数を取得するにはどうすればよいですか?

  3. 3

    Cの可変個引数関数に引数を渡す

  4. 4

    別の関数の引数として可変数と引数のタイプを持つC ++関数

  5. 5

    可変個引数関数の引数をクラスインスタンスにカプセル化する

  6. 6

    Cの可変個引数関数の引数から型を決定します

  7. 7

    同じタイプの引数の可変個引数の数を定義する方法はありますか?

  8. 8

    C ++可変個引数テンプレートパラメータの序数を取得します

  9. 9

    Cで可変引数のサイズを取得しますか?

  10. 10

    ベクトルのタプルに関数を適用して、要素のタプルを取得します(可変個引数テンプレート)

  11. 11

    多次元可変個引数std :: arrayのルートタイプを取得する

  12. 12

    C ++で引数型チェックを使用した可変個引数テンプレートを使用して、コンパイル時に関数への引数の数を取得する

  13. 13

    Typed Racketの可変個引数関数のタイプは何ですか?

  14. 14

    等しい引数タイプを持つ可変個引数テンプレート関数

  15. 15

    可変個引数C関数のnull

  16. 16

    Cの可変個引数関数

  17. 17

    PostgreSQLでは、異なるタイプの引数を受け入れる可変個引数関数をどのように宣言できますか?

  18. 18

    関数ポインタへの可変個引数関数

  19. 19

    可変個引数マクロ内のC99互換のネストされた呼び出し

  20. 20

    関数ポインタ引数の可変個引数テンプレート引数の推定

  21. 21

    テンプレート可変個引数関数を使用して、複数の引数を別の関数に渡します

  22. 22

    可変個引数のタイプに応じて決定します

  23. 23

    可変個引数テンプレートを使用してC ++で関数ポインタをラップします

  24. 24

    Cでの引数展開を使用したカスタム印刷関数の可変個引数マクロ

  25. 25

    可変個引数引数タイプを使用したテンプレートの複数の可変個引数継承

  26. 26

    引数をインプレースでソートするC ++可変個引数関数

  27. 27

    関数ポインタを介して可変個引数関数に渡されたパラメータは、その値を変更します

  28. 28

    Cの可変個引数関数でパラメーターとして渡されたvoidポインターをどのように操作しますか

  29. 29

    Cで可変個引数関数の呼び出しを転送する

ホットタグ

アーカイブ