関数テンプレートのインスタンス化からテンプレートパラメータを推測する方法は?

maximum_prime_is_463035818

クラステンプレートのインスタンス化からテンプレートパラメータを推測する方法を知っています。

template <typename T>
struct foo {};

template <typename T>
struct foo_param;

template <typename T>
struct foo_param< foo<T> > {
    using type = T;
};

しかし、私は関数テンプレートに対して同じことをすることに迷っています。ナイーブ

template <typename T>
void bar() {}

template <auto F>
struct bar_param;

template <typename T>
struct bar_param< &bar<T> > {
    using type = T;
};

で失敗する

<source>:21:19: error: template argument '& bar<T>' involves template parameter(s)
   21 | struct bar_param< &bar<T> > {
      |                   ^~~~~~~

私はエラーを理解していると思いますが(実際には理解していなかったことが判明しましたが、それは別の質問の場合です)、それを回避する方法がわかりません。方法を推論例えば私がすることができますint与えられましたか&bar<int>

max66

何が欲しいのかは不可能だと思います。

少なくとも、の型はbar<T>すべての型でまったく同じあるため、関数の型を通過しませんvoid。引数のない戻り関数です。

簡単な方法でこれを確認できます static_assert()

static_assert( std::is_same_v<decltype(bar<int>), decltype(bar<long>)> );

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

テンプレート関数のパラメーターのタイプを推測できますか?

分類Dev

クラステンプレートのテンプレートメンバー関数を推測する

分類Dev

デフォルトのテンプレートテンプレートパラメータ値はコンテキストから推測されますか?

分類Dev

テンプレートパラメータから基本型を推測する

分類Dev

std :: functionパラメータタイプからテンプレート引数を推測します

分類Dev

コンパイラはテンプレート関数のタイプを推測できませんか?

分類Dev

関数呼び出しからテンプレートパラメータパックを推測します

分類Dev

クラスのスコープ内のconstexpr関数にポインターを渡すときに、親テンプレートのパラメーターを推測するのは悪用ですか?

分類Dev

c ++クラステンプレートはインスタンス化できますが、同じテンプレートパラメータを使用した関数テンプレートのインスタンス化は失敗します

分類Dev

javaテンプレートテンプレートタイプで関数パラメータクラスタイプインスタンスを返す方法

分類Dev

ラムダからC ++でテンプレートタイプのパラメーターを推測するにはどうすればよいですか?

分類Dev

関数テンプレートをテストのパラメーターにする方法は?

分類Dev

静的メンバー関数からクラステンプレート引数を推定するパターン

分類Dev

関数の引数からテンプレートタイプを推測する

分類Dev

typedefコンポジションからネストクラステンプレートタイプを推測する方法は?

分類Dev

TypeScriptを作成して、高階関数のテンプレートパラメーターを推測します

分類Dev

推定されるコンテキストのプロパティを保持しながら、エイリアステンプレートをテンプレートテンプレートパラメータに推定する方法はありますか?

分類Dev

デフォルトパラメータからテンプレート引数を推測します

分類Dev

テンプレート関数にイテレータの基になるデータ型を自動的に推測させる方法はありますか?

分類Dev

コンストラクターパラメーターからテンプレートメンバー配列を初期化する方法は?

分類Dev

テンプレートパラメータ式のタイプを推測する

分類Dev

テンプレートクラスのテンプレートをインスタンス化する方法

分類Dev

コンパイラが戻り値の型からテンプレートパラメータを推測できないのはなぜですか?

分類Dev

テンプレートクラスのメンバー関数へのポインタを渡す方法は?

分類Dev

関数テンプレートを呼び出すときに一部のテンプレートパラメーターのみを指定し、コンパイラーに他のパラメーターを推測させることは可能ですか?

分類Dev

コンパイラがテンプレートパラメータを推測するのを助ける方法は?

分類Dev

関数テンプレートがクラステンプレートでインスタンス化されるのはいつですか?

分類Dev

関数テンプレートがクラステンプレートでインスタンス化されるのはいつですか?

分類Dev

テンプレートを使用してstd :: functionのパラメータータイプを推測するにはどうすればよいですか?

Related 関連記事

  1. 1

    テンプレート関数のパラメーターのタイプを推測できますか?

  2. 2

    クラステンプレートのテンプレートメンバー関数を推測する

  3. 3

    デフォルトのテンプレートテンプレートパラメータ値はコンテキストから推測されますか?

  4. 4

    テンプレートパラメータから基本型を推測する

  5. 5

    std :: functionパラメータタイプからテンプレート引数を推測します

  6. 6

    コンパイラはテンプレート関数のタイプを推測できませんか?

  7. 7

    関数呼び出しからテンプレートパラメータパックを推測します

  8. 8

    クラスのスコープ内のconstexpr関数にポインターを渡すときに、親テンプレートのパラメーターを推測するのは悪用ですか?

  9. 9

    c ++クラステンプレートはインスタンス化できますが、同じテンプレートパラメータを使用した関数テンプレートのインスタンス化は失敗します

  10. 10

    javaテンプレートテンプレートタイプで関数パラメータクラスタイプインスタンスを返す方法

  11. 11

    ラムダからC ++でテンプレートタイプのパラメーターを推測するにはどうすればよいですか?

  12. 12

    関数テンプレートをテストのパラメーターにする方法は?

  13. 13

    静的メンバー関数からクラステンプレート引数を推定するパターン

  14. 14

    関数の引数からテンプレートタイプを推測する

  15. 15

    typedefコンポジションからネストクラステンプレートタイプを推測する方法は?

  16. 16

    TypeScriptを作成して、高階関数のテンプレートパラメーターを推測します

  17. 17

    推定されるコンテキストのプロパティを保持しながら、エイリアステンプレートをテンプレートテンプレートパラメータに推定する方法はありますか?

  18. 18

    デフォルトパラメータからテンプレート引数を推測します

  19. 19

    テンプレート関数にイテレータの基になるデータ型を自動的に推測させる方法はありますか?

  20. 20

    コンストラクターパラメーターからテンプレートメンバー配列を初期化する方法は?

  21. 21

    テンプレートパラメータ式のタイプを推測する

  22. 22

    テンプレートクラスのテンプレートをインスタンス化する方法

  23. 23

    コンパイラが戻り値の型からテンプレートパラメータを推測できないのはなぜですか?

  24. 24

    テンプレートクラスのメンバー関数へのポインタを渡す方法は?

  25. 25

    関数テンプレートを呼び出すときに一部のテンプレートパラメーターのみを指定し、コンパイラーに他のパラメーターを推測させることは可能ですか?

  26. 26

    コンパイラがテンプレートパラメータを推測するのを助ける方法は?

  27. 27

    関数テンプレートがクラステンプレートでインスタンス化されるのはいつですか?

  28. 28

    関数テンプレートがクラステンプレートでインスタンス化されるのはいつですか?

  29. 29

    テンプレートを使用してstd :: functionのパラメータータイプを推測するにはどうすればよいですか?

ホットタグ

アーカイブ