Variadic templatesで受け取った可変長引数を保存しておいて、後で関数呼び出しに利用する
C++11に、Variadic templatesという機能がある。テンプレートの引数を可変長にできるというものだ。
これによって、型安全でPolymorphicな可変長引数を実現することができる。
参考資料:
Variadic templatesの典型的な使い方は、関数型プログラミングのように、引数を一個ずつ取り出していって再帰的に処理をするというものだ。
しかし、渡された引数を保存しておいて後で使いたい場合はどのようにすればよいだろうか?これは、tuple
を用いる事で解決できる。
参考資料: * c++ - "unpacking" a tuple to call a matching function pointer - Stack Overflow
自分自身も細かいところは理解できていないが、可変長のint定数 s
を作りだし、それを std::get
に渡した上で ドット3つ記法(正式名称を知らない)で引数として展開している。もう少し理解できたら後で追記します。