テンプレートの特殊化の代わりに関数テンプレートを使用する

アパロマー

インテル固有の計算が利用可能な場合、私はテンプレート関数を専門としています。私の場合、SSEとAVXです。特殊化されていないテンプレート関数と特殊化されたテンプレート関数を比較してパフォーマンスを比較するテストプログラムを作成したいと思います。ただし、特殊化されている型の非特殊化テンプレート関数を呼び出す方法がわかりません。

簡単な例を次に示します。

#include <iostream>

template <typename T>
void f(T val)
{
  std::cout << "Template function. Value: " << val << std::endl;
}

template <>
void f(float val)
{
  std::cout << "Float function. Value: " << val << std::endl;
}

int main()
{
  f(1);
  f(1.0f);
  return 0;
}

質問:f(1.0f)関数名を変更せずに、特殊化されていないテンプレート関数で呼び出す方法はありますか?

明確化:私の場合、2つの関数は、ヘッダーと実装ファイルの同じペアの一部としてライブラリで提供されます。次に、これは(テンプレートの場合)プログラムに含まれ、(特殊化の場合)リンクされます。

user7860670

特殊化を禁止するパラメータを追加できます。

#include <iostream>

template <typename T, bool enable_specialization = true>
void f(T val)
{
  std::cout << "Template function. Value: " << val << std::endl;
}

template <>
void f<float, true>(float val)
{
  std::cout << "Float function. Value: " << val << std::endl;
}

int main()
{
  f(1.0f);
  f<float, false>(1.0f);
  return 0;
}

オンラインコンパイラ

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

テンプレートの戻り値に対するテンプレート関数の完全な特殊化

分類Dev

テンプレートの特殊化に関する問題

分類Dev

テンプレート関数のタイプ特性に依存する特殊化

分類Dev

型特性を使用して文字列イテレータのテンプレート関数を特殊化する

分類Dev

テンプレートの特殊化を使用する

分類Dev

テンプレートの特殊化でconstchar **を使用する

分類Dev

関数テンプレートを部分的に特殊化する代わりに、どうすればよいですか?

分類Dev

decltypeの末尾の戻り値の型を持つ関数テンプレートを特殊化する

分類Dev

テンプレート化されたtypenameを使用した関数テンプレートの特殊化

分類Dev

constref引数を使用した関数テンプレートの特殊化

分類Dev

C ++ 20概念テンプレート関数の特殊化を使用する場合の依存関係

分類Dev

C ++:配列の関数テンプレートの特殊化

分類Dev

ブール条件に関するテンプレートの特殊化

分類Dev

文字列型関数、呼び出しを均一にするためのテンプレートの特殊化

分類Dev

constを参照するテンプレートの特殊化

分類Dev

関数テンプレートc ++の明示的な特殊化

分類Dev

クラスと関数テンプレートの特殊化

分類Dev

テンプレート関数の特殊化が存在するかどうかをテストする方法

分類Dev

別の名前空間内から関数テンプレートを明示的に特殊化する方法は?

分類Dev

C ++テンプレートの特殊化と関数の戻り値

分類Dev

C ++テンプレートの特殊化と関数の戻り値

分類Dev

テンプレートメンバー関数を特殊化する方法は?

分類Dev

テンプレートの特殊化にタイプを追加する

分類Dev

明示的な特殊化「...」は、関数テンプレートの特殊化ではありません

分類Dev

配列を引数とするテンプレートの特殊化

分類Dev

追加のテンプレートパラメータを必要とするタイプの関数の部分的なテンプレートの特殊化

分類Dev

部分的なテンプレートの特殊化でdecltypeを使用する

分類Dev

std名前空間にテンプレートの特殊化を追加する

分類Dev

C ++テンプレートの特殊化に基本クラスを追加する

Related 関連記事

  1. 1

    テンプレートの戻り値に対するテンプレート関数の完全な特殊化

  2. 2

    テンプレートの特殊化に関する問題

  3. 3

    テンプレート関数のタイプ特性に依存する特殊化

  4. 4

    型特性を使用して文字列イテレータのテンプレート関数を特殊化する

  5. 5

    テンプレートの特殊化を使用する

  6. 6

    テンプレートの特殊化でconstchar **を使用する

  7. 7

    関数テンプレートを部分的に特殊化する代わりに、どうすればよいですか?

  8. 8

    decltypeの末尾の戻り値の型を持つ関数テンプレートを特殊化する

  9. 9

    テンプレート化されたtypenameを使用した関数テンプレートの特殊化

  10. 10

    constref引数を使用した関数テンプレートの特殊化

  11. 11

    C ++ 20概念テンプレート関数の特殊化を使用する場合の依存関係

  12. 12

    C ++:配列の関数テンプレートの特殊化

  13. 13

    ブール条件に関するテンプレートの特殊化

  14. 14

    文字列型関数、呼び出しを均一にするためのテンプレートの特殊化

  15. 15

    constを参照するテンプレートの特殊化

  16. 16

    関数テンプレートc ++の明示的な特殊化

  17. 17

    クラスと関数テンプレートの特殊化

  18. 18

    テンプレート関数の特殊化が存在するかどうかをテストする方法

  19. 19

    別の名前空間内から関数テンプレートを明示的に特殊化する方法は?

  20. 20

    C ++テンプレートの特殊化と関数の戻り値

  21. 21

    C ++テンプレートの特殊化と関数の戻り値

  22. 22

    テンプレートメンバー関数を特殊化する方法は?

  23. 23

    テンプレートの特殊化にタイプを追加する

  24. 24

    明示的な特殊化「...」は、関数テンプレートの特殊化ではありません

  25. 25

    配列を引数とするテンプレートの特殊化

  26. 26

    追加のテンプレートパラメータを必要とするタイプの関数の部分的なテンプレートの特殊化

  27. 27

    部分的なテンプレートの特殊化でdecltypeを使用する

  28. 28

    std名前空間にテンプレートの特殊化を追加する

  29. 29

    C ++テンプレートの特殊化に基本クラスを追加する

ホットタグ

アーカイブ