テンプレート関数のエイリアスとインスタンス化を同時に行うにはどうすればよいですか?

レオン

私は次のようなテンプレート関数を持っています:

using namespace std::chrono;
using namespace std::chrono_literals;
template <typename D>
time_point<system_clock, D> makeTime(
   int year, int month, int day, int hour = 0, int minute = 0,
   int second = 0, int ms = 0, int us = 0, int ns = 0 );

通常、私はそれを次のように呼びます: auto us_tp1 = makeTime<microseconds>( 2020, 5, 26, 21, 21, 21, 999, 123 );

しかし今、私は次のようなエイリアス「makeTimeUS」を介してどこかでそれを呼び出す必要があります。

auto us_tp1 = makeTimeUS( 2020, 5, 26, 21, 21, 21, 999, 123 );

そのように、makeTimeUSはmakeTimeのインスタンスです。

私はこれを試しました:

using makeTimeUS = template time_point<system_clock, microseconds> makeTime;

この:

using makeTimeUS = template time_point<system_clock, microseconds> makeTime(
 int, int, int, int, int, int, int, int, int );

しかし、どちらもコンパイルに合格することはできません。

テンプレート関数をインスタンス化し、同時にエイリアスを与えるにはどうすればよいですか?そうする必要がある理由は、makeTimeUSを呼び出す古いコードが多すぎて、テンプレートではなく通常の関数であるかのようになっているためです。ありがとう!

NathanOliver

必要な関数への関数ポインタを取得し、それを「エイリアス」として使用できます。それは次のようになります:

auto makeTimeUS = makeTime<microseconds>;

そして、次のように使用できます:

auto us_tp1 = makeTimeUS( 2020, 5, 26, 21, 21, 21, 999, 123 );

ただし、これで名前を変更できます。これは関数ポインタであるため、デフォルトの引数は機能しなくなり、すべてのパラメータを指定する必要があります。

これを回避するには、ラムダを使用してエイリアスの代わりにラッパーを作成できます。これは次のようになります。

auto makeTimeUS = [](int year, int month, int day, int hour = 0, 
                     int minute = 0, int second = 0, int ms = 0)
                  { 
                       return makeTime<microseconds>(year, month, day, hour, minute, second, ms); 
                  };

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

スケールアウト時に関数アプリのインスタンス数を監視するにはどうすればよいですか?

分類Dev

メンバー関数テンプレートのインスタンス化を削除するにはどうすればよいですか?

分類Dev

エイリアス宣言を使用して関数typedefをテンプレート化するにはどうすればよいですか?

分類Dev

C ++でテンプレート関数インスタンスのショートカットを作成するにはどうすればよいですか?

分類Dev

Angularサーブ、テスト、リントをリアルタイムで同時に実行するにはどうすればよいですか?

分類Dev

リストの関連アイテムを数えてインスタンスのリストを更新するにはどうすればよいですか?

分類Dev

Elixirのインデックスでリストから複数のアイテムを同時に削除するにはどうすればよいですか?

分類Dev

kivyアプリでClock.schedule_intervalのインスタンスを同時に実行するにはどうすればよいですか?

分類Dev

クラステンプレートによって演算子関数タイプを特殊化するにはどうすればよいですか?

分類Dev

テンプレートタイプのエイリアスを作成するにはどうすればよいですか?

分類Dev

予測できない型エイリアスが存在する場合に、明示的なテンプレートのインスタンス化にアプローチするにはどうすればよいですか?

分類Dev

アプリケーションの起動時に能力インスタンスルールを初期化するにはどうすればよいですか?

分類Dev

関数ポインタをクラステンプレートパラメータとして渡すにはどうすればよいですか?

分類Dev

キープレスライブラリとプロンプトライブラリを同時に使用するにはどうすればよいですか?

分類Dev

キープレスライブラリとプロンプトライブラリを同時に使用するにはどうすればよいですか?

分類Dev

同じテンプレート関数で複数のタイプを特殊化するにはどうすればよいですか?

分類Dev

実行時にインプレースでクラスインスタンスの動作を変更するにはどうすればよいですか?

分類Dev

C ++ 03で、インスタンス化されたテンプレート関数のアドレスを参照するにはどうすればよいですか?

分類Dev

インスタンス化されている場合、テンプレート化された変数の特殊化をコンパイル時に失敗させるにはどうすればよいですか?

分類Dev

リクエストコンテンツからのインスタンス化とアクション呼び出しでMVCコントローラーをテストするにはどうすればよいですか?

分類Dev

vscodeのインストールセットアップと同様に、私のエレクトロンアプリからインストーラーを作成するにはどうすればよいですか?

分類Dev

インライン変数テンプレートのカスタマイズポイントを作成するにはどうすればよいですか?

分類Dev

テンプレート化されたクラスインスタンスをテンプレートパラメータとして別のテンプレートに渡すにはどうすればよいですか?

分類Dev

テンプレートを使用して、C ++で「using」(パラメーター化されたエイリアスの作成)でエイリアスを作成するにはどうすればよいですか?

分類Dev

ホバー時にアイコンとテキストの色を同時に変更するにはどうすればよいですか?

分類Dev

Grails:プラグインのテストと開発を同時に行うにはどうすればよいですか?

分類Dev

テンプレート関数またはクラス内の型を含むコンテナの変数をインスタンス化するにはどうすればよいですか?

分類Dev

ボタンクリック時にアイテムテンプレートのドロップダウンリストで選択した値をデータベースに保存するにはどうすればよいですか?

分類Dev

テンプレートクラスのインスタンス化を防ぐにはどうすればよいですか?

Related 関連記事

  1. 1

    スケールアウト時に関数アプリのインスタンス数を監視するにはどうすればよいですか?

  2. 2

    メンバー関数テンプレートのインスタンス化を削除するにはどうすればよいですか?

  3. 3

    エイリアス宣言を使用して関数typedefをテンプレート化するにはどうすればよいですか?

  4. 4

    C ++でテンプレート関数インスタンスのショートカットを作成するにはどうすればよいですか?

  5. 5

    Angularサーブ、テスト、リントをリアルタイムで同時に実行するにはどうすればよいですか?

  6. 6

    リストの関連アイテムを数えてインスタンスのリストを更新するにはどうすればよいですか?

  7. 7

    Elixirのインデックスでリストから複数のアイテムを同時に削除するにはどうすればよいですか?

  8. 8

    kivyアプリでClock.schedule_intervalのインスタンスを同時に実行するにはどうすればよいですか?

  9. 9

    クラステンプレートによって演算子関数タイプを特殊化するにはどうすればよいですか?

  10. 10

    テンプレートタイプのエイリアスを作成するにはどうすればよいですか?

  11. 11

    予測できない型エイリアスが存在する場合に、明示的なテンプレートのインスタンス化にアプローチするにはどうすればよいですか?

  12. 12

    アプリケーションの起動時に能力インスタンスルールを初期化するにはどうすればよいですか?

  13. 13

    関数ポインタをクラステンプレートパラメータとして渡すにはどうすればよいですか?

  14. 14

    キープレスライブラリとプロンプトライブラリを同時に使用するにはどうすればよいですか?

  15. 15

    キープレスライブラリとプロンプトライブラリを同時に使用するにはどうすればよいですか?

  16. 16

    同じテンプレート関数で複数のタイプを特殊化するにはどうすればよいですか?

  17. 17

    実行時にインプレースでクラスインスタンスの動作を変更するにはどうすればよいですか?

  18. 18

    C ++ 03で、インスタンス化されたテンプレート関数のアドレスを参照するにはどうすればよいですか?

  19. 19

    インスタンス化されている場合、テンプレート化された変数の特殊化をコンパイル時に失敗させるにはどうすればよいですか?

  20. 20

    リクエストコンテンツからのインスタンス化とアクション呼び出しでMVCコントローラーをテストするにはどうすればよいですか?

  21. 21

    vscodeのインストールセットアップと同様に、私のエレクトロンアプリからインストーラーを作成するにはどうすればよいですか?

  22. 22

    インライン変数テンプレートのカスタマイズポイントを作成するにはどうすればよいですか?

  23. 23

    テンプレート化されたクラスインスタンスをテンプレートパラメータとして別のテンプレートに渡すにはどうすればよいですか?

  24. 24

    テンプレートを使用して、C ++で「using」(パラメーター化されたエイリアスの作成)でエイリアスを作成するにはどうすればよいですか?

  25. 25

    ホバー時にアイコンとテキストの色を同時に変更するにはどうすればよいですか?

  26. 26

    Grails:プラグインのテストと開発を同時に行うにはどうすればよいですか?

  27. 27

    テンプレート関数またはクラス内の型を含むコンテナの変数をインスタンス化するにはどうすればよいですか?

  28. 28

    ボタンクリック時にアイテムテンプレートのドロップダウンリストで選択した値をデータベースに保存するにはどうすればよいですか?

  29. 29

    テンプレートクラスのインスタンス化を防ぐにはどうすればよいですか?

ホットタグ

アーカイブ