2014-05-01から1ヶ月間の記事一覧

moveを阻害しないconstexprの文脈でのconstメンバ関数と非constメンバ関数の呼び分け

以下の記事と全く同じ事にハマった。 小ネタ - constexpr の文脈でconstメンバ関数と非constメンバ関数を呼び分ける http://boleros.hateblo.jp/entry/20120331/1333187905 その際に、追加でハマった事を捕捉的に書いておく。 引数がrvalue referenceであっ…

overloaded_function再び

関連項目 make_overloadを書いた http://fimbul.hateblo.jp/entry/2014/05/10/162852 再帰深度を抑えたtuple的コンテナの構築 http://fimbul.hateblo.jp/entry/2014/05/25/014112 前回記事(関連項目2つ目)でも登場した テンプレートパラメータにKeyとValueを…

再帰深度を抑えたtuple的コンテナの構築

本当に一部の機能のみ実装。要素型とindexをテンプレートパラメータにペアにして保持するvalue_holderを多重継承する方針。make_overloadの際に初めて知った、テンプレート引数を展開しながら一気に多重継承するという技法を早速パクりました。getでindexを…

tupleの要素を走査する

Indexの数字を増やしながらvisitorを適用しつつ線形再帰する方法もあるけれど、index_tupleを用いて再帰深度を抑えてやる方が良い気がするのでそのように実装した。 tupleの状態を変更したい場合は参照で受け取って値を書き換える関数を渡すと良さそう。cons…

make_overloadを書いた

きっかけは@sscriskさんがTwitterで次のようなおもしろコードを貼っていたことです。 http://melpon.org/wandbox/permlink/vfXMZR8lGs78NGs6 auto f = make_overload( [](int i){ std::cout << "int: " << i << '\n'; }, [](double d){ std::cout << "double…