C++雑記
受け取ったタイプリストに対し適当な数字を被らないように返す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>…
タイトルで話が完結している 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>
自分が遭遇した最悪なバグを書いておこうと思う 型破壊バグ std::cout << typeid(BreakType).name();//struct ??::??と出力される //error C2133:サイズが不明です //error C2512:コンストラクタがない BreakType c; 上記のように壊れた型が発生する初代ポケ…
解説 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 - connpass constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。CPUの嬌声が聞こえてきそうだ *1 発表者:ボレロ村上氏 資料:http://www.slideshare.net/GenyaMurakami/onstexprcpu*2 内容は(…
私には昔から、GOFのデザインパターンというものを学習したときからどうにも『そり』が合わないデザインパターンがあった visitorパターンである別に理解できなかったわけではない。使えないわけでもない。実際何度か使う場面もあった だが、思いだすたび、…
グィスト constexpr binary fold実際に(静的に)実行したものはこちら wandbox [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ二分木foldとは文字通り二分木で畳み込み関数である binary_fold(plus{},1,2,3,4,5)は以下のように解決される ((1 + 2) + (3 + (4 + 5))) foldlやf…
マクロは邪悪であり害悪である 故にマクロは滅びなければならない 滅ぼさなければならない。存在してはならない。これは人間の義務である頭の中でワンワンと神が嘶くのでマクロフリーなテストライブラリもどきを作っていたgist マクロ無しの健全なテストライ…
再帰深度を抑えたtuple的コンテナの構築 - ここは匣 コレの最後の部分を逆に動かしたら指定された方だけに対応するhash関数が作れるのではとか考えてみたVSとClangでは動いたというのに。2対1だけど規格的にどっちが正しいのかわからない 間違ってる気さえ…
某社に面接に行ってきました。 で、そこで「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なら★…
現在私はtuplepleという、boost.fusionのC++11版になりたいタプル操作ライブラリを作っている 作り始めた理由はちょっと込み入ったことをしようと思うと必ずタプル操作が必要になったからだで、製作途中でindex_tuple_idiomというのを思いついた 厳密に言う…
この問題解決は不具合があります。この問題についてはこちらをご覧ください VisualStudio2013のバグ?alias templateにT::valueやT::typeやvariadic-templateを使うと不都合が起こる - TXT.TXT テストコード #include<iostream> #include<typeinfo> namespace test { template<class T> st</class></typeinfo></iostream>…
新年から「できない|難しい」ネタ。世知辛いですね。あけましておめでとうございますツイッター見てたらこんなコードが流れてきた 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…
先日ふと 「std::tieがあるのでこれを使って9割自動比較演算子のオーバーロードを作ろう」とか考えまして、途中で「boost::operatorsでいいじゃん」と気が付きまして
先日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:>…
AAAあAAAAAAぁあああAあああAあああああ!?????? const std::string&x = 0; >>Expression: invalid null pointer こいつ等もコンパイル通りやがった…… const std::string&y = NULL; const std::string&z = nullptr; なにをどーやったら参…