規格的にヤバそうな限定type_hashメタ関数を作ったけどGCCで動かないし、別の実装とかも考えたけどそれもダメくさいしもうだめだ

再帰深度を抑えたtuple的コンテナの構築 - ここは匣 コレの最後の部分を逆に動かしたら指定された方だけに対応するhash関数が作れるのではとか考えてみたVSとClangでは動いたというのに。2対1だけど規格的にどっちが正しいのかわからない 間違ってる気さえ…

対数オーダー再起で構築されるtupleのギミックを大雑把に実装した

C++

(追記)こっちも読め。こっちのがいい 再帰深度を抑えたtuple的コンテナの構築 - ここは匣 (追記終わり)調査環境はVS2013のみ たぶんO(log N)で動く コード中のstd::tupleはtype_listの代わりに使った。std::tupleを入れると実は対数オーダーにならないんじゃ…

VSでも動くパラメーターパックヘルパーを作った

C++

https://gist.github.com/Fuyutsubaki/e798e6c8d9265d020b4d これ template<size_t N ,class Func> class drop_functor { template<class F> drop_functor(F&&f); template<class...T> auto operator()(T&&...args); }; template<size_t N,class Func> auto make_drop(Func&&func) ->drop_functor<N, Func>; N個dropして関数を適用して</n,></size_t></class...t></class></size_t>…

対数オーダーでN番目の引数にアクセスするvalue_at的関数

C++

夜 (fimbul11) on Twitter さんの Template Meta Programming入門から応用までの367ページ当たり見ながら書いた 深度O(logN)で動くvalue_at的な関数http://melpon.org/wandbox/permlink/i0YgUwd8wdsJBDJE gccとClangで動作確認。VSではstd::index_sequenceが…

const 参照と右辺値参照と一時オブジェクトの寿命、あとforward_as_tupleとか

C++

一時オブジェクトとはこれである x+y; Type(); 要するに変数に関連付けられていないオブジェクトのことであるこいつ等の寿命は式が終わるまで、つまりセミコロンが出てくるまでである void f(const std::string&s); //main //fを処理する段階ではまだ生きて…

二項演算子をクラス内でオーバーロードしたテンプレートクラスをテンプレート関数で返してdecltype内で演算すると C2677 エラーが起きて最高に意味不明

template<class> struct rhs { friend int operator*(int x, rhs){ return 2; } }; template<class T> rhs<T> make(T){ return rhs<T>(); } using R = decltype(42 * make(42)); int main(){} 自身が右辺に来る二項演算子を クラス内でオーバーロードした テンプレートクラスを テ</t></t></class></class>…

メイドでもよく分る右辺値参照

C++

本日2014年 2011年から早3年。C++11も浸透してきた、してきてる、してきて欲しいなという時分ですね 冬椿です。ファミレスに行ったらカレーがメニューから消えてました。こんばんはC++11で追加された機能の一つに『右辺値参照』というものがあります こいつ…

そうだ、reverse関数を実装しよう

某社に面接に行ってきました。 で、そこで「reverse関数書いて(意訳)」と言われたので書いてきた void reverse(std::string& str) { size_t N = str.size(); for (size_t i = 0; i < N/2; ++i) std::swap(str[i], str[N - 1 - i]); } こんなの。CodeIQなら★…

VisualStudio2013のバグ?alias templateにT::valueやT::typeやvariadic-templateを使うとC2955エラーなど不都合が起こる

VisuakStudio2013のバグ?エイリアステンプレートにエイリアステンプレートを使うとC2955エラーを吐く - TXT.TXTの問題をちゃんと分析しなおした テストコードはーい template<size_t N> struct Index{ static const size_t value = N; }; template<class T> using foo = typena</class></size_t>…

タイプリストに対するmapの実装とC++11のテンプレートメタプログラミング

C++

なんかむらむらする。プログラムを書くっていう日じゃない のでちょっと自作ライブラリtupleple::type_list::mapについて書きたいまず何がやりたいか、サンプルを書く using tuple=std::tuple<void,int,char>; using result=map<std::add_pointer,tuple>::type; static_assert(std::is_same<result,std::tuple<void*,int*,char*>>::value,</result,std::tuple<void*,int*,char*></std::add_pointer,tuple></void,int,char>…

index tuple idiomについてと、std::integer_sequenceとかについて考える事

現在私はtuplepleという、boost.fusionのC++11版になりたいタプル操作ライブラリを作っている 作り始めた理由はちょっと込み入ったことをしようと思うと必ずタプル操作が必要になったからだで、製作途中でindex_tuple_idiomというのを思いついた 厳密に言う…

VS2013のバグ?クラス内非型テンプレートクラスをクラス内の宣言部で非型を使って展開するとできない。ってこう書いても何言ってるかわからんね

C++

なんかVSバグ?タグ作ったほうが良い気がした タイトルの通り #include<tuple> #include<type_traits> #include<iostream> struct C { template<size_t n> struct inner { using type = int; }; template<size_t ...N> static std::tuple<typename inner<N>::type...> f();//← template<size_t ...N> struct g { std::tuple<typename inner<N>::type...…</typename></size_t></typename></size_t></size_t></iostream></type_traits></tuple>

[function<R(Args...)>] → [function<R(tuple<Args...>)]する関数を書いてみた

C++

就活中。C++かけるところで働きたい。この際C++じゃなくてもいい。冬椿です [std::function<R(Args...)>] から [std::function<R(std::tuple<Args...>)]に変換する関数を書いたおよそ40行。短いことはいいことだ //サンプル int func(int a, int &b, int c) { std::cout << a << b << c; return</r(std::tuple<args...></r(args...)>…

VisuakStudio2013のバグ?エイリアステンプレートにエイリアステンプレートを使うとC2955エラーを吐く

この問題解決は不具合があります。この問題についてはこちらをご覧ください VisualStudio2013のバグ?alias templateにT::valueやT::typeやvariadic-templateを使うと不都合が起こる - TXT.TXT テストコード #include<iostream> #include<typeinfo> namespace test { template<class T> st</class></typeinfo></iostream>…

【C++】poly_functionが作れなかったのでジェネリックラムダ2つを受け取りどちらかを返す関数型言語のif式っぽいのを作った

C++

前回(【C++雑記】半日ほどstd::functioinのジェネリック版について考えてたけどどう考えても難しい - TXT.TXT) のだとあんまりにもあんまりなので、ナンカもうそれっぽい事が出来ればいいやとIf関数を作ってみた https://gist.github.com/Fuyutsubaki/853670…

【C++雑記】半日ほどstd::functioinのジェネリック版について考えてたけどどう考えても難しい

新年から「できない|難しい」ネタ。世知辛いですね。あけましておめでとうございますツイッター見てたらこんなコードが流れてきた poly_function<void(_1)> f = [](auto x) {}; https://twitter.com/cpp_akira/status/424244741245378560C++14で追加されたジェネリック</void(_1)>…

ゲームデバックとかで使えそうな実行時間と回数を計測するクラスを作った

C++

プログラミングあるある プログラムが遅いけど思い当たる節が多過ぎてどこがネックかわからないなのでこんな感じにに動くクラスを作ってみた template<class T> using debug_timer = typename DebugTimer::Timer<T>; int main() { std::vector<int> v = Make10000();//10000の</int></t></class>…

使用するメンバ関数をクラスに通知する(ようにみせかける)方法

このコードを見てほしい printは使用するメンバ関数を出力し、funcは適当な処理を行う int main(){ Foo foo; foo.print(); //func1 func2 func3 foo.func1(); foo.func3(); foo.func2(); } 出力>>func1 func2 func3 int main(){ Foo foo; foo.print(); //fun…

本当にゲームプログラミング等における画像などリソースの管理がわからないので考えてみた

ゲームプログラミング等における画像などリソースの管理がわからない - TXT.TXT の続き。ワカリマセーンワカリマセーン で、 前回あげた方法の何が自分的に気に食わないかというと、自分では必要ない画像を自分が使うクラスが必要らしいということで読み込ま…

ゲームプログラミング等における画像などリソースの管理がわからない

ゲームプログラミングあるある。リソース管理がだるい 何がだるいね?というといまいちスマート感に欠ける辺りがとてもだるい 管理法1:管理しない とてもKOOLなメソッド。とても直観的、とても奇麗。そしてとても...Big♥ class A{ Texture texture;//=Textur…

今更感あふれますがデジゲー博お疲れ様でした

お疲れ様でした。当日ブースに来て下さった方ありがとうございます もう2週間近くたってますね。いろいろあってまだAIMS本以外戦利品に手を付けていません。夏コミの戦利品もまだ積んであります。嗚呼 ところで今回イベント初参加でした。イベント処女でし…

本日デジゲー博にてゲームを頒布します

お値段無料にて「シカクイ」頒布いたします。A-47 TXT.TXTです シカクイってどんなげーむ? ~すごく分りづらい説明~ シカクイはライフゲーム(人生ゲームに非ず)をベースに作られた物理パズルゲームです ~わかりやすい説明~ ①クリックします②吹き飛びます③…

今晩辺りに正式な告知出しますが明日17日デジゲー博に参加します。A-47「TXT.TXT」です

爆ぜるSTGは諸事情により延期となりました。申し訳ございません 当日はゆる不和癒し系パズルゲームを頒布します。したいな。間に合わせます。いきてる。どっこい生きてる!! パズルゲーム…?

自由を求めて、戻り値と引数を設定できるFunctionalVisitor

C++

進捗どうですか進捗だめです冬椿です。現実逃避して自由度の高いVisitorパターンを作ってました ビジターパターンって void accept(Visitor&visotor) こんな感じ。自由度がない。戻り値戻せないし引数引けないし。籠のなかの小鳥のよーだ。ドレードレー 奴隷…

継承とstd::shared_ptr & unique_ptrとカスタムデリータ

C++

ふと、継承されたクラスとスマポのカスタムデリータについて気になったので調べてみた

C++11時代はタプル操作なのでtuple版for_eachとstd::hash<tuple>

C++

C++11時代はtuple操作がいろいろイケメンだと女の子にモテモテだと聞いて tupleって抽象化された構造体だよねー

【告知】デジゲー博A-47TXT.TXTです

デジゲ博*1にサークル参加が決まりました A-47『TXT.TXT』です サークル側としてのイベントは初参加です。所謂サークル処女です 自爆系STG出したいねー 頑張るよー 進歩だめです。ダーメダメダメダメ人間 *1:http://digigame-expo.org/

C++用汎用構文解析器pneuma

C++

boost::spirit怖すぎとか言いながらずっと作ってた。spiritV3来るって噂もあるけど知りません ソース

コンストラクタをbindしたりとかで使うConstruct

C++

ふとstd::bindでコンストラクタをbind出来ないかと思いまして using namespace std::placeholders; struct X{ X(int x, std::string s){ } }; std::bind(X, 3, _1);//出来ない std::bind(X::X, 3, _1);//出来ない std::bind(static_cast<X(int x, std::string s)>(X), 3, _1);//できね</x(int>…

friend bool operator<(const X&lhs,const X&rhs)って構文をboost::operatorsを見て初めて知った

先日ふと 「std::tieがあるのでこれを使って9割自動比較演算子のオーバーロードを作ろう」とか考えまして、途中で「boost::operatorsでいいじゃん」と気が付きまして