本当は怖いHPC

HPC屋の趣味&実益ブログ

Variadic templatesで受け取った可変長引数を保存しておいて、後で関数呼び出しに利用する

C++11に、Variadic templatesという機能がある。テンプレートの引数を可変長にできるというものだ。

これによって、型安全でPolymorphicな可変長引数を実現することができる。

参考資料:

Variadic templatesの典型的な使い方は、関数型プログラミングのように、引数を一個ずつ取り出していって再帰的に処理をするというものだ。

gist.github.com

しかし、渡された引数を保存しておいて後で使いたい場合はどのようにすればよいだろうか?これは、tupleを用いる事で解決できる。

参考資料: * c++ - "unpacking" a tuple to call a matching function pointer - Stack Overflow

gist.github.com

自分自身も細かいところは理解できていないが、可変長のint定数 s を作りだし、それを std::get に渡した上で ドット3つ記法(正式名称を知らない)で引数として展開している。もう少し理解できたら後で追記します。

【広告】