スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タプルを展開して関数の引数として使う

以前書いたコードを晒す。std::tupleの要素を展開して関数に渡す。擬似コードで書けば次の感じ:

template<typename R, typename F, typename Tuple>
R apply_tuple(F f, Tuple args) {
    return f(std::get<0>(args), std::get<1>(args), ...);
}

使い方:

apply_tuple<void>(std::printf, std::make_tuple("hage %d\n", 3));

実装方法を言葉で説明するのは面倒なので擬似Haskellコードを見て納得してください:

apply_tuple f t = apply_impl f t 0 where
  apply_impl f t n | n == length t = f
  apply_impl f t n                 = apply_impl (f (t !! n)) t (n+1)

実装:

スポンサーサイト

テーマ : プログラミング | ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

minoki

Author:minoki
好きなプログラミング言語:
Haskell,Lua
GitHubアカウント
Twitter

最新記事
月別アーカイブ
カテゴリ
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。