Boost
Boost のバージョンが上がる度に,毎回 手動でファイルをダウンロードするのは,少し面倒ですよね. そういう場合には, Git リポジトリを使うのが便利ですが,単に git clone git://github.com/ryppl/boost-svn.gitとした場合,開発版も全部一緒にダウンロ…
関連記事: http://d.hatena.ne.jp/gintenlabo/20100531/1275335373 http://d.hatena.ne.jp/gintenlabo/20100602/1275505739 結論から言います。 以前の記事において、参照に対する Boost.Optional は、生ポインタの代替として使える、と書きましたが、 現状…
週末は Boost.勉強会 #4 に参加してきました。 なかなか興味深い発表が多かったので、興味ある方は http://d.hatena.ne.jp/osyo-manga/20110226/1298715364 辺りを参照してみるといいんじゃないでしょうか。 んで、一応僕も Boost.Optional について話してき…
少し前に書いた記事 で紹介した std::unique_ptr の C++98/03 移植が Boost にないのはなんでなんだぜ、 と思っていたら、実は既にあったようなので、ここで紹介します。 Boost.Interprocess.UniquePtr Boost.Interprocess なんていう仰々しいライブラリに入…
昔 Boost.Optional Must Go (2) - 野良C++erの雑記帳 の後半に書いた、 「boost::optional はサイズの点でポインタより不利である」 という不満点を解決するためのクラスを作ってみました: etude::optional_ref http://gist.github.com/634279 使い方は …
この前 Boost.勉強会 #2 で喋ってきたわけですが、 なにせああいった場での発表は初めてだったので、伝えたいことが伝えきれず、 また「口頭で触れたけど、スライドには書いてない」事柄が多かったので、 この場を借りて補足させていただきたいと思います。 …
Boost.FlyweightView more presentations from gintenlabo.Ust: http://www.ustream.tv/recorded/9489637 内容は Boost.Flyweight についてです。 …とか言いつつ大半はconstに関してなのはご愛嬌。 勉強会での発表は初めてだったので拙い点は、どうぞご容赦…
以前、 それでも Boost.Optional を使う、大きく分けて2つくらいの理由 - 野良C++erの雑記帳 という記事を書いたのですが、 その中の boost::optional に関して誤りがあったので、訂正したいと思います。 window.twttr = (function(d, s, id) { var js, fjs…
よーするに、こう書きたい。 BOOST_FOREACH( std::string line, lines( std::cin ) ) { // 入力の各行に対する処理 } std::getline を使ってループするのは美しくないですし。 多分 Boost 辺りを探せば有る…と思うんですが、見つからないです。 目撃情報求む…
Python の for 文って、 C++ のに比べて格好イイですよね。 # Python for i in range( 0, n ): # 0, 1, ... , n に対して処理する // C/C++ for( int i = 0; i < n; ++i ) { // 0, 1, ... , n に対して処理する } 単純に Python の方が短く書ける、というの…
ちょっと前の記事で、 boost::optional のデストラクタは、 T のデストラクタが trivial であった場合でも 非 trivial になってしまうので、ちょっと嫌だなー、という旨を書きましたが、本の虫: C++0xにおけるPODの定義 を読んで、考え方が変わりました。 デ…
Boost.Optional Must Go - 野良C++erの雑記帳 Boost.Optional Must Go (2) - 野良C++erの雑記帳 最近、何回かに分けて、 Boost.Optional について、(細かい)不満を日記に書いてきました。 これは別に Boost.Optional が嫌いだから不満を書いた訳ではな…
参考: C++でデストラクタを呼ばなくていい条件 - 野良C++erの雑記帳 http://ideone.com/PuFtN std::cout << boost::has_trivial_destructor< int >::value << std::endl; // true std::cout << boost::has_trivial_destructor< boost::optional<int> >::value <<</int>…
動機: C++ で Haskell の Either っぽい何かを作ってみた。 - 野良C++erの雑記帳 せっかく Either 作ったんだから Maybe モナドも作ろうぜ、という話。 まず Boost には、既に Maybe に相当する Boost.Optional が存在するので、 そいつをモナドの >>= に対…
boost::optional<int> const x = 42; // boost::optional<double> const y = x; // NG. optional<T> から optional<U> への変換は explicit boost::optional<double> y; y = x; // OK. optional<T> から optional<U> への代入は許されている // boost::optional<double> const z = boost::make_optiona</double></u></t></double></u></t></double></int>…
動機: boost::optionalだけじゃなくboost::eitherがほしい - Faith and Brave - C++で遊ぼう Boost.Optional は C++ でも屈指の便利ライブラリですが、 「戻り値として使う」場合には、時々「失敗した」という状況の他に、失敗した状況を示すような値が返せ…
参考: デストラクタを呼ばずに再構築 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ C++ では、動的に確保したメモリ領域にオブジェクトを構築した場合、 確保した領域を解放する前に、デストラクタを呼び出す必要があります: // 何らかの…
boost::optional は「値 T あるいは無効値」を取ることのできるクラスです。 通常このクラスは、「失敗するかもしれない」関数の戻り値として使用されます: #include <boost/optional.hpp> #include <iostream> // 例として std::getline を optional で実装してみる boost::optional<std::string> getl</std::string></iostream></boost/optional.hpp>…
http://d.hatena.ne.jp/nagoya313/20100314/1268536979 というわけで、超期待。 僕の Lua 弾幕プロジェクトも、そろそろ具体的に動き出すべきですね。
http://www.boost.org/users/news/version_1_42_0 新規ライブラリは Boost.Uuid http://www.boost.org/doc/libs/1_42_0/libs/uuid/uuid.htmlということです。 実のところUUIDってあまり知らなかったので、折角の機会ですし、少し調べてみたいと思います。と…
参考: http://d.hatena.ne.jp/faith_and_brave/20100201/1264997004 「C++0xになると、C++03 でごちゃごちゃした部分がだいぶすっきり書けるようになる」 らしいですが、C++0xを待たなくてもBoostを使えばだいぶすっきり書けるので、 BoostでのC++入門はこ…
なんかついったーで boost::lexical_cast について盛り上がったので、日記のネタにすることにします: http://togetter.com/li/2178 lexical_cast を知らない方の為に少し説明すると、こいつは「文字列表現を媒介にしたキャスト」であり、例えば int i = boo…
Smart Pointers というか主に shared_ptr ですが(scoped_ptr のこともたまには思い出してあげてね!)。 恐らくは散々ガイシュツなネタですが、まー「検索するのが面倒だ」って人の手助けになればいいかと思います。僕も検索するの面倒ですし。 というかこの記…
Boost の万能ファンクタ Boost.Function は、そのコピーの際、中に格納された関数オブジェクトも一緒にコピーしてくれます: #include <boost/function.hpp> #include <iostream> #include <boost/format.hpp> // 萌え using namespace std; using boost::format; // テスト用ファンクタ struct counter { exp</boost/format.hpp></iostream></boost/function.hpp>…
結構 音速が遅い情報かもですが、すごく便利なライブラリが boost に追加されていたので久々に随筆更新。 最近、ぼちぼちゲーム開発(正確にはゲーム開発用のライブラリ開発)してたりするのですが、ゲームって「毎フレーム何かをさせる」って処理が多いです…
前々回のプログラムを、今回はもうちょっとまともに書き直して見ます。 その時、ちょっと興味のあった boost::iostreams::output_filter の機能を使って試してみましょうかね。
Web 製作にあたって必要になった「C++ソースコードの <, >, & を文字参照しつつ、コメントを <span class=comment>〜</span> で修飾」するプログラムを、あえて perl では書かずに C++ で書いてみた。 というのも boost::Xpressive という便利ライブラリが存在することは前々から知って…