ここは匣スマートフォン用の表示で見るここは匣この広告は、90日以上更新していないブログに表示しています。本当に一部の機能のみ実装。要素型とindexをテンプレートパラメータにペアにして保持するvalue_holderを多重継承する方針。make_overloadの際に初めて知った、テンプレート引数を展開しながら一気に多重継承するという技法を早速パクりました。getでindexをキーとして継承元の関数を呼び分ける。線形再帰しつつ構築する従来の方法では構築の再帰深度がネックとなり、要素数の上限を強く制約していましたが、この方法なら問題無い筈。sprout::type_tupleの要素アクセスがO(logN)の筈なので、要素数Nのtupleを構築する際の計算量はO(NlogN)・再帰深度は定数、要素アクセスはO(logN)。このテンプレートパラメータの形式だと、make_tupleを介さずに構築するのは厳しそう。@iorateさんが上記コードを元に更に優れた実装をしてくれました。再帰深度はO(logN)、要素アクセスも定数になっていてオーダーも改善されて素晴らしいです。部分特殊化として以下のように書けば確かに複数のテンプレートパラメータパックを保持出来ますね。N>を得るのがとても賢い...。Indices>...自分頭悪いなーって感じました。このコードは即保存しました...見事です。この方針は、pairのネスト等を用いたtupleの実装より大幅に優れているのではないでしょうか。[追記2]というか、これって、定数オーダーで要素アクセス出来る型tupleとして使えるような...?http://melpon.org/wandbox/permlink/UUgjw947JW91H770と思い、改造して型tupleを実装してみました。"");}ろくにテストしてないのでバグがあるかもしれませんが、方針としてはいけそうですね。これで構築の計算量がO(N)、構築時の再帰深度が(index_rangeを呼び出すので)O(logN)、要素アクセスが定数オーダーに落ちたので、コンパイラマジックに頼らずとも十分優れたオーダーになり、一応tuple、型tuple辺りの実装オーダーの改良には決着が付いたと言えるんじゃないでしょうか。01:41再帰深度を抑えたtuple的コンテナの構築Tweet広告を非表示にする関連記事2014-08-31再帰深度を抑えた畳込み関数FTMPのメタ関数で使われている畳込みの実装アプローチをソース...2014-03-03tupleからvariantのarrayに変換するタイトル通りです。pack長のindex_sequenceを構築する月別アーカイブはてなブログをはじめよう!fimbulさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。