Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
RFC: type erasure VaultにBoost.TypeErasureというライブラリが置いてあるのですが、「設計が悪いから書きなおした」とのこと。 ダウンロードして見てみると、すごく使いやすくなっていました。 ユーザー定義の要件も簡単に作れます。 ゲームのシーン管理はこのように書くことができます: #include <iostream> #include <boost/type_erasure/any.hpp> #include <boost/type_erasure/primitive_concept.hpp> #include <boost/type_erasure/concept_interface.hpp> #include <boost/type_erasure/rebind_any.hpp> #include <boost/mpl/vector.hpp> usin
元ネタ:HerokuでWebアプリ開発を始めるなら知っておきたい10のこと いいぜ、誰も書かないっていうなら、まず、俺が(ry。 と、そんな感じで、元ネタとの関係性は全くありませんが、『広めるためにはまず自分から……』って事で。 多分、誰も後に続かないだろうけども。 まぁ内容が適当なのでいつも通りです。 間違っててもいじめないでくだしあ>< ようこそ、コンパイルの世界へ。 1.BOOST_MPL_ASSERT BOOST_STATIC_ASSERT(static_assert) の、Boost.MPL 版です。 内部で、"::value" を展開してくれます。 #include <boost/type_traits/is_same.hpp> #include <boost/mpl/assert.hpp> BOOST_MPL_ASSERT(( boost::is_same<int, int*
Boost.Accumulatorsなどを見ていると、Boost.Parametersの主な使い道はデフォルト引数をユーザーコードから名前付きで渡すことなんじゃないかと思えてきました。 たとえば、こんな再描画フラグがデフォルトfalseのdraw関数があったとして: void draw(const Point& p, bool is_draw = false); こういった関数で、デフォルト値以外を指定することはあまりないからこういった宣言を書くわけですが、たいていこういう関数には直値を指定するので、ユーザーコードには意味不明のbool値を指定することになってしまうことがあります。 draw(p, true); // trueってなんじゃい -> 関数宣言を見に行く 私はこういう状況ではよく、その場その場で定数に名前を付けてから渡していますが const bool is_redraw =
本来の表記は「progress_display」だと思うんだけど、この記事に付けられてしまった題名は記事名の制約から不正確なものとなっている可能性が高い可能性が低いです。 progress_display(ぷろぐれすでぃすぷれい)はC++のboostライブラリでありマスコットキャラクター。最もハイレベルなテクニックを駆使したライブラリであると評価が高い。最大16台までのマルチディスプレイをサポートしてる。最も人気が高く世界中に3億人のプログラマーが愛用している。 C++の次世代規格であるC++11への採用が最有力と言われていたが、作者がソースコードを紛失したためお蔵入りになっている。 概要[編集] プログラムが動作しているときに何もリアクションがないと、プログラムが仕事をさぼっているのではないかと疑われることがよくある。progress_displayは、とりあえず嘘でもいいので何かを表示
最近twitterでid:thincaさんが、boost::shared_ptrにくるんだoperator<の定義してあるクラスをstd::setに、そのクラスのoperator<で比較した順序で格納されるようにしたいってツイートしてて、BoostのMLで丁度同じ話題が出てました。 Using boost::shared_ptr with std::set 比較関数オブジェクト作ればいいけど、Boostならもっと短くしてくれるよね?って。 そこで解答として boost/utility/compare_pointees.hpp を使う方法 type数少なめな比較関数の実装を使う方法 Boost.Lambdaを使う方法 の3つが挙げられてました。 Boost.Lambdaを使う方法は #include <iostream> #include <set> #include <boost/lamb
これまで書いてきた Boost.statechart のまとめです。 まずこれまで書いたのは以下の 6 エントリです。本記事を入れて全 7 エントリとなります。 Boost.statechart 事始め Boost.statechart でイベントを受け取る Boost.statechart で状態のネストを定義する。 Boost.statechart で現在の状態を確認する。 Boost.statechart で複数状態を持つマシンを実装する。 Boost.statechart で CSV を読む。 主に参照したドキュメントはこちら。 The Boost Statechart Library 状態のモデリングは「State パターン」というそれっぽい名前がついているぐらいなのでプログラマなら誰もが一度は意識した事があるかと思います。 で、僕もご多分に漏れず状態をそれっぽく表現しようと試み
Boostのバージョンを調べる方法をよく忘れるので自分の備忘録にメモメモ・・・ #include <iostream> #include <boost/version.hpp> using namespace std; int main() { cout << ( BOOST_VERSION / 100000 ) << "." << ( BOOST_VERSION / 100 % 1000 ) << "." << BOOST_VERSION % 100; } ちなみに各サイトでのバージョンの状況は以下のようになりました(2010/12/28現在) ideone - C++ 1.39.0 http://ideone.com/Te00z ideone - C++0x None http://ideone.com/QWipp codepad 1.34.1 http://codepad.org/X
この記事は C++ Advent Calendar 2010 の参加記事です。詳細は以下。 C++ Advent Calendar jp 2010 : ATND 今日はクリスマスですし、みなさんお忙しいと思いますし、それに僕はあんまり変態的な事を書けませんので…。*1 そんな中であまりTwitter上であまり話が出てこない(気がする)boost.interprocessのほんの一機能について備忘録的にまとめてみました。 Memory Mapped Files? boost.interprocessは基本的に共有メモリの強力なラッパライブラリなのですが、その機能としてMemory Mapped Filesというものがあります。これはファイルをメモリとほぼ同じ感覚で操作するための機能です。ファイルを開いてそれに仮想的なアドレスを与え、あたかもメモリ上にあるデータにアクセスしてるかのような、まさ
Boost.DateTimeが使いにくかったので、日時計算を目的とした簡単なDateTimeライブラリを書きました。 SHAND_DATE_TIME_CUSTOM_NOW_TIMEをdefineすることで、現在日時を返す関数を書き換えることができるようになるので、Testableです。 フォーマット指定は、strftimeを参考に、よく使うものだけを採用しました。 shand/date_time.hpp #ifndef SHAND_DATE_TIME_INCLUDE #define SHAND_DATE_TIME_INCLUDE #include <cstddef> #include <ctime> #include <map> #include <boost/xpressive/xpressive_static.hpp> #include <boost/xpressive/regex_a
C++のテンプレートメタプログラミングライブラリ「Boost.MPL」について勉強中.新しいものを勉強する時はとりあえずそれを使ってBrainf*ckのインタプリタを作るのが学習法の定石なので,早速Boost.MPLを使ってBrainf*ckのインタプリタを書いた. ソース コンパイル中にBrainf*ckが実行される. mpl_brainfuck.cc #include <iostream> // change this parameter according to the length of your program #define BOOST_MPL_LIMIT_STRING_SIZE 128 #include <boost/mpl/at.hpp> #include <boost/mpl/comparison.hpp> #include <boost/mpl/erase.hpp> #
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
Boost.Optional Must Go - 野良C++erの雑記帳 Boost.Optional Must Go (2) - 野良C++erの雑記帳 最近、何回かに分けて、 Boost.Optional について、(細かい)不満を日記に書いてきました。 これは別に Boost.Optional が嫌いだから不満を書いた訳ではなく、むしろ その逆、 Boost.Optional が便利な分、逆に不満点が目立つので書いていたわけですが、 よく考えたら、 Boost.Optional の便利さを、纏まった記事で書いていないなー、 と、そう思い至ったので、この辺で Boost.Optional を徹底的に推奨する記事でも書いてみようかな、 というわけで、さんざん既出なネタばかりですが、折角なので書いてみることにしましたよ。 冒頭に挙げた以外で参考になるような記事は、この辺でしょうか: C++
私の発表資料: http://www.slideshare.net/digitalghost/preprocesstime-lambda-expression ソース: http://patch-tag.com/r/digitalghost/pplambda/home , http://sites.google.com/site/ilikemanaka/code/pplambda.tar.bz2 あぁどうしよう。今回は大阪開催なので旅程がなくて書くことがないのであった。終わり。 などというだけではあんまりなので、まぁ千里中央の地形はやばいですね。前にも第一回GC勉強会のときに行きましたが、会場の建物に入るまでやっぱり迷いました。地上なのにぐぐる地図が役に立たないというすばらしい地形ですね。あと誰も御堂筋線が地下鉄だと信じてくれないのですが、一つ誤解があって、御堂筋線は新大阪以北だと江坂まで
ちょっとした構文解析なら Xpressive でも充分だけど、ちゃんとした(?)構文解析器の Spirit と比べてどれだけ性能の差があるのか調べてみた。 どうせ比較するなら実用的なもので、というわけで RFC 2616 やらを参考に HTTP のリクエストヘッダをパースさせてみた。 本当はパースしたヘッダの内容を取り込ませて比較したかったけど、時間の都合上、正しいヘッダかどうかの判断だけにした。 パースしたヘッダと、それぞれ 1 万回ずつパースしたときの結果は以下の通り。 計測に使用した PC のスペックは CPU: Core i5 750@2.67GHz、メモリ: 2GB、gcc: 4.4.3。 // 標準的なヘッダ std::string str("GET / HTTP/1.1\r\n" "Host:www.google.co.jp\r\n" "User-Agent:Mozilla/
勉強会で配る用の名刺を作らねばとプリンタのインクと名刺用の紙を買ってきたわけですが、前日の夜にハードディスク整理を始めたから名刺作る時間がなくなってきた上に、家のプリンタが大きすぎて名刺印刷できなかった。やることがあるときに限って掃除をしたくなるのは何も部屋だけではないということが分かる、心温まる一場面ですね。仕方ないのでわんくまに参加したときに作った名札を持っていくことにした。この時点で7時。本当は開始の10時に間に合うように出発したかったけどそれなりに急いで新幹線に乗ったわけです。で、セッションのお題目を確認するためatnd開いたらなんと13時からであった。まさかの開始時間詐欺!訴えてやる!!!!! QJD(急に時間ができたので)の私は前回江戸に来たときの続きで秋葉原を見て周ることに。日中のクソ暑い中、暑さでへばった犬(not めるぽん)のような表情で歩いていると突然「ちょっといいです
Singletonクラスを作るたびにそのクラスのメンバ変数としてMutexとかを宣言したくないんです。冗長だし。 Lock, UnLockの方法もきっと面倒なんですよね。アクセスするたびにロックを手動で書くような。 そういったものを書かせないで、これまでみたいにget_instanceメソッドを呼び出してアクセスできるような形にしたい。 ということで、そんな感じの物を書いてみました。C++0x無いと動きません。GCC4.4(boost1.43.0), MSVC10(boost1.44.0)で確認しました。 (boost1.43.0はrvalue referenceに対応できてないので冗長なコードが混ざってます) ちゃんと定義しておくべきだろうなというのがいくつか欠けてる気がしますが…。 http://ideone.com/N2sFR 本当ならポリシーベースにするべきなのかな、と思ったのです
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く