C++雑記

LocalTypeHashというかKeyにかぶりがあってもコンパイルを通す型mapの種

受け取ったタイプリストに対し適当な数字を被らないように返すLocalTypeHashメタ関数を作りたい using TypeHash=makeTypeHash<List<char,int void>>; TypeHash::apply<char>//0 TypeHash::apply<int>//1 TypeHash::apply<void>//2こんな感じしかして型が被った場合どうなるだろうこの場合このまま</void></int></char></list<char,int>…

VS2013で破綻した型の名前を出力してたら{ctor}の文字が出てきた

タイトルで話が完結している namespace minibug { template<class ...T> struct List{}; template<class...T> std::true_type length_impl(List<T...>); template<class T> struct wrap{ using type = T; }; template<class T> using identity = typename wrap<T>::type; template<class list> using length = identity</class></t></class></class></t...></class...t></class>

VS2013で遭遇した最悪なバグ

自分が遭遇した最悪なバグを書いておこうと思う 型破壊バグ std::cout << typeid(BreakType).name();//struct ??::??と出力される //error C2133:サイズが不明です //error C2512:コンストラクタがない BreakType c; 上記のように壊れた型が発生する初代ポケ…

c=pow(2,k)のとき、n xor cはn + c*((n/c) mod 2 ? -1:1)と等しいらしい

解説 c == pow(2,k) == (1<<k)n + c*((n/c) mod 2 ? -1:1) → n + c*((n/(1<<k)) mod 2 ? -1:1) → n + c*((n>>k)mod 2?-1:1) → n + c*([nのk番bitが立っているか]?-1:1) → [nのk番が立っているか] ? n-c :n+c → [nのk番が立っているか]? [nのk番を折る] :[nのk番を立てる] → n^c</k)n>

ドワンゴC++勉強会 #1に行ってきた

タイトルの通りである ドワンゴC++勉強会 #1 - connpass constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。CPUの嬌声が聞こえてきそうだ *1 発表者:ボレロ村上氏 資料:http://www.slideshare.net/GenyaMurakami/onstexprcpu*2 内容は(…

私がvisitorパターンが嫌いな理由

私には昔から、GOFのデザインパターンというものを学習したときからどうにも『そり』が合わないデザインパターンがあった visitorパターンである別に理解できなかったわけではない。使えないわけでもない。実際何度か使う場面もあった だが、思いだすたび、…

VS使いだけどwandboxでconstexpr二分木fold関数作った

グィスト constexpr binary fold実際に(静的に)実行したものはこちら wandbox [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ二分木foldとは文字通り二分木で畳み込み関数である binary_fold(plus{},1,2,3,4,5)は以下のように解決される ((1 + 2) + (3 + (4 + 5))) foldlやf…

マクロフリーの健全なテストライブラリをちょっと作ってみた

マクロは邪悪であり害悪である 故にマクロは滅びなければならない 滅ぼさなければならない。存在してはならない。これは人間の義務である頭の中でワンワンと神が嘶くのでマクロフリーなテストライブラリもどきを作っていたgist マクロ無しの健全なテストライ…

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

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

そうだ、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なら★…

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

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

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++雑記】半日ほどstd::functioinのジェネリック版について考えてたけどどう考えても難しい

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

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

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

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

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

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

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

コンパイラのバグ?auto x0 = {std::shared_ptr<A>(new A("XXX"))};の動作がおかしい

先日VS2013previewをいそいそとインスコってお楽しみしてたのですがこんなバグ(?)に引っかかりまして…… ちょいとこのプログラムを脳内コンパイルの後コンパイルしてほしい class A{public : A(const std::string&x) :str(x) {} void f(){std::cout << str<<std::endl;}private: std::string str;};int main(){ auto x0 = {std::shared_ptr<A>(</std::endl;}private:>…

const std::string&x=0 ;がコンパイルを通って\ヌルポ!!/かつてない殺意と悲しみの波動を頭の痛くなりそうな新しい感覚を味わっているかい?

AAAあAAAAAAぁあああAあああAあああああ!?????? const std::string&x = 0; >>Expression: invalid null pointer こいつ等もコンパイル通りやがった…… const std::string&y = NULL; const std::string&z = nullptr; なにをどーやったら参…