Boost

Boost の Release 版のみを Git リポジトリから持ってくる

Boost のバージョンが上がる度に,毎回 手動でファイルをダウンロードするのは,少し面倒ですよね. そういう場合には, Git リポジトリを使うのが便利ですが,単に git clone git://github.com/ryppl/boost-svn.gitとした場合,開発版も全部一緒にダウンロ…

Boost.Optional Must Go (3)

関連記事: http://d.hatena.ne.jp/gintenlabo/20100531/1275335373 http://d.hatena.ne.jp/gintenlabo/20100602/1275505739 結論から言います。 以前の記事において、参照に対する Boost.Optional は、生ポインタの代替として使える、と書きましたが、 現状…

Boost.勉強会 #4 で喋ってきました。

週末は Boost.勉強会 #4 に参加してきました。 なかなか興味深い発表が多かったので、興味ある方は http://d.hatena.ne.jp/osyo-manga/20110226/1298715364 辺りを参照してみるといいんじゃないでしょうか。 んで、一応僕も Boost.Optional について話してき…

Boost に std::unique_ptr の移植がないかな、と思ったら有った。

少し前に書いた記事 で紹介した 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.勉強会 #2 で喋ってきたわけですが、 なにせああいった場での発表は初めてだったので、伝えたいことが伝えきれず、 また「口頭で触れたけど、スライドには書いてない」事柄が多かったので、 この場を借りて補足させていただきたいと思います。 …

Boost.勉強会 #2 で喋ってきました。

Boost.FlyweightView more presentations from gintenlabo.Ust: http://www.ustream.tv/recorded/9489637 内容は Boost.Flyweight についてです。 …とか言いつつ大半はconstに関してなのはご愛嬌。 勉強会での発表は初めてだったので拙い点は、どうぞご容赦…

boost::optional について

以前、 それでも Boost.Optional を使う、大きく分けて2つくらいの理由 - 野良C++erの雑記帳 という記事を書いたのですが、 その中の boost::optional に関して誤りがあったので、訂正したいと思います。 window.twttr = (function(d, s, id) { var js, fjs…

ファイルを BOOST_FOREACH で行ごとに処理したい

よーするに、こう書きたい。 BOOST_FOREACH( std::string line, lines( std::cin ) ) { // 入力の各行に対する処理 } std::getline を使ってループするのは美しくないですし。 多分 Boost 辺りを探せば有る…と思うんですが、見つからないです。 目撃情報求む…

C++ で Python の for を書きたい

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 は可能な限り trivial であるべきだ。

ちょっと前の記事で、 boost::optional のデストラクタは、 T のデストラクタが trivial であった場合でも 非 trivial になってしまうので、ちょっと嫌だなー、という旨を書きましたが、本の虫: C++0xにおけるPODの定義 を読んで、考え方が変わりました。 デ…

それでも Boost.Optional を使う、大きく分けて2つくらいの理由

Boost.Optional Must Go - 野良C++erの雑記帳 Boost.Optional Must Go (2) - 野良C++erの雑記帳 最近、何回かに分けて、 Boost.Optional について、(細かい)不満を日記に書いてきました。 これは別に Boost.Optional が嫌いだから不満を書いた訳ではな…

Boost.Optional Must Go (2)

参考: 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++ で Maybe モナド

動機: C++ で Haskell の Either っぽい何かを作ってみた。 - 野良C++erの雑記帳 せっかく Either 作ったんだから Maybe モナドも作ろうぜ、という話。 まず Boost には、既に Maybe に相当する Boost.Optional が存在するので、 そいつをモナドの >>= に対…

Boost.Optional Must Go

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>…

C++ で Haskell の Either っぽい何かを作ってみた。

動機: boost::optionalだけじゃなくboost::eitherがほしい - Faith and Brave - C++で遊ぼう Boost.Optional は C++ でも屈指の便利ライブラリですが、 「戻り値として使う」場合には、時々「失敗した」という状況の他に、失敗した状況を示すような値が返せ…

C++でデストラクタを呼ばなくていい条件

参考: デストラクタを呼ばずに再構築 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ C++ では、動的に確保したメモリ領域にオブジェクトを構築した場合、 確保した領域を解放する前に、デストラクタを呼び出す必要があります: // 何らかの…

Boost.Optional と Boost.InPlaceFactory で初期化遅延

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 弾幕プロジェクトも、そろそろ具体的に動き出すべきですね。

Boost 1.42.0 がリリースされましたね

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ってあまり知らなかったので、折角の機会ですし、少し調べてみたいと思います。と…

C++/Boost 基礎文法最速マスター

参考: http://d.hatena.ne.jp/faith_and_brave/20100201/1264997004 「C++0xになると、C++03 でごちゃごちゃした部分がだいぶすっきり書けるようになる」 らしいですが、C++0xを待たなくてもBoostを使えばだいぶすっきり書けるので、 BoostでのC++入門はこ…

Boost.LexicalCastの改良案

なんかついったーで boost::lexical_cast について盛り上がったので、日記のネタにすることにします: http://togetter.com/li/2178 lexical_cast を知らない方の為に少し説明すると、こいつは「文字列表現を媒介にしたキャスト」であり、例えば int i = boo…

今更ながらに Boost.SmartPointers を考える

Smart Pointers というか主に shared_ptr ですが(scoped_ptr のこともたまには思い出してあげてね!)。 恐らくは散々ガイシュツなネタですが、まー「検索するのが面倒だ」って人の手助けになればいいかと思います。僕も検索するの面倒ですし。 というかこの記…

Boost.Function について

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::signals2 が便利そうな件について

結構 音速が遅い情報かもですが、すごく便利なライブラリが boost に追加されていたので久々に随筆更新。 最近、ぼちぼちゲーム開発(正確にはゲーム開発用のライブラリ開発)してたりするのですが、ゲームって「毎フレーム何かをさせる」って処理が多いです…

boost::iostreams あたりを使って

前々回のプログラムを、今回はもうちょっとまともに書き直して見ます。 その時、ちょっと興味のあった boost::iostreams::output_filter の機能を使って試してみましょうかね。

boost::Xpressive を使ってみた。

Web 製作にあたって必要になった「C++ソースコードの <, >, & を文字参照しつつ、コメントを <span class=comment>〜</span> で修飾」するプログラムを、あえて perl では書かずに C++ で書いてみた。 というのも boost::Xpressive という便利ライブラリが存在することは前々から知って…