タグ

c++とboostに関するnitoyonのブックマーク (10)

  • 動的削除子 (dynamic deleter) - 意外と知られていない? boost::shared_ptr の側面 - Cry’s Diary

    boost::shared_ptr は動的削除子 (dynamic deleter) と呼ばれる技法に基づいて実装されています.この動的削除子という技法で重要なのは, boost::shared_ptr が最終的に呼び出す解放処理が boost::shared_ptr のテンプレート引数の型に関係なく,コンストラクタに実際に渡されたポインタの型で,かつ boost::shared_ptr のコンストラクタの呼び出しの段階で 決定する,ということです. 以下のようなコードが,動的削除子の効果が一番分かりやすい例になるでしょう. class X{ public: ~X() { std::cout << "X::~X" << std::endl; } }; class B{ public: ~B() // virtual でないことに注意!! { std::cout << "B::~B" <<

    動的削除子 (dynamic deleter) - 意外と知られていない? boost::shared_ptr の側面 - Cry’s Diary
    nitoyon
    nitoyon 2011/10/10
    動的削除子 (dynamic deleter)。new するタイミングで deleter を作成することで、shared_ptr<T> の宣言時には不完全型でよいようにする。
  • Boost.勉強会#4で「ゲーム開発のC++」を話してきました - 神様なんて信じない僕らのために

    とりま、 アップロードしました。 スタッフの皆さん、参加者の皆さんお疲れ様でした。 アキラさんには直前まで資料作っていてご心配をおかけいたしました。orz... Boost study#4View more presentations from Isoparametric !.

    Boost.勉強会#4で「ゲーム開発のC++」を話してきました - 神様なんて信じない僕らのために
    nitoyon
    nitoyon 2011/02/27
    ゲーム開発のC++。ゲームならではの苦労。
  • Boost.勉強会 #3 関西 - Faith and Brave - C++で遊ぼう

    Boost.勉強会 #3 関西 - こくちーず Boost.懇親会 #3 関西 - ATND 参加募集開始しました。 スピーカーも募集中です。id:Cryoliteさんとかid:Cryoliteさんとかid:Cryoliteさんとか。

    Boost.勉強会 #3 関西 - Faith and Brave - C++で遊ぼう
    nitoyon
    nitoyon 2010/09/07
    Boost.勉強会
  • C++ - boost::function はどのように可変長引数に対応しているのか

    「超汎用関数ポインタ」のコメントより boost::functionは難しくてギブアップ・・・ 可変長のオーバーロードをどうやって解決しているのか が知りたかったんだけど、 (以下略) C++ の真骨頂はプリプロセッサとテンプレートを駆使したメタプログラミングにある。メタプログラミングこそが、C++ を他言語の追随を許さない超言語に押し上げていると共に、比類なき難度を持った言語にしている。 boost::function も、そこそこにメタしている実装のひとつだ。 とりあえず、プリプロセスされていない状態では理解が難しいので、プリプロセスだけ実行する。そうすれば格段にソースコードは読み易くなる。Visual C++ なら「/E」「/PE」「/EP」コンパイラオプションを使うと、プリプロセスした結果が得られる。 以下は、boost::function をプリプロセスした結果の抜粋だ(実装は省

    nitoyon
    nitoyon 2009/07/07
    boost::function を解説。Visual C++ では /E /PE /EP オプションをつけてビルドするといい具合に。
  • 『C++テンプレートテクニック』もうすぐ発売です。 - Faith and Brave - C++で遊ぼう

    私とεπιστημηさんの2人で、C++テンプレート書きました。 (ぼくは著者名を名で載せてます) 発売日は2009/04/24(金)で、税込2,940円になります。 内容は、テンプレートの基礎から始まり、テンプレートメタプログラミング、 Boost C++ Librariesの中で使われている手法、C++0xでテンプレートがどのように進化していくか等を紹介しています。 屋とかAmazonで見かけたら買ってやってください。

    『C++テンプレートテクニック』もうすぐ発売です。 - Faith and Brave - C++で遊ぼう
    nitoyon
    nitoyon 2009/04/09
    2009年4月23日発売(まだ Amazon には登場してない)。テンプレートメタプログラミング、boost、C++0x。
  • MASATOの開発日記: boost::arrayの初期化

    boost::arrayの初期化 Boost C++Librariesプログラミング 第2版を読んで気が付いたのですが、 boost::arrayクラスのオブジェクトは不思議な方法で初期化できます。 こんな方法です。 boost::array<int, 5> a = {0, 1, 2, 3, 4}; どんなコンストラクタを書けばこのように初期化できるようになるのかさっぱり分からなかったので、調べてみました。 結論。 boost::arrayにコンストラクタはありませんでした。デストラクタもありません。 仮想関数も無く、全てのメンバがpublicです。 どうやら、POD(Plain Old Data)型になる条件が満たされているようです。 つまりboost::array<int, 5>は、C言語互換の構造体なのです。 C言語時代、構造体は次のような方法で初期化できました。 struct fo

    nitoyon
    nitoyon 2008/10/19
    集成体型であればクラスを {} で初期化できる。
  • Generic Image Library - Generic Image Library - Confluence

    Generic Image Library Images are a fundamental construct in any project that involves graphics, image processing, and video and yet the variability in pixel data representations (color space, bit depth, channel ordering, planar/interleaved, alignment policy) makes it hard to write imaging-related code that is both generic and efficient. Generic Image Library (GIL) is a C++ generic library which al

    nitoyon
    nitoyon 2008/03/08
    Adobe 製の画像処理ライブラリ。MITライセンス。Boost使用。
  • Adobe Generic Image Library(GIL)を使ってみる

    2007年4月6日 Suns & Moon Laboratory 概要インストールzliblibpnglibjpgboostAdobe GILサンプルの動作確認!こんなエラーが出る!!またもエラーサンプル一覧resizeaffineconvolutionmandelbrotinterleaved_ptrx_gradienthistogrampacked_pixeldynamic_image 概要 ちょっと画像処理をしたくなったので、物色した所面白そうなの発見。 Adobe Generic Image Library (GIL) プレゼンテーションを見ると、なんか使ってみたくなります。 とは言うもののテンプレートを使った事ないんですが...ま、勉強しましょう。 インストール 結構面倒でした。setup.exe一個でインストールしたいものです<軟弱 zlib 幸いバイナリがあったので、それを使

    nitoyon
    nitoyon 2008/03/08
    GIL のインストール手順、サンプル。
  • delegateもどき

    目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 1078 記事 - 2 コメント - 26216 トラックバック - 363 ニュース 著作とお薦めの品々は 著作とお薦めの品々は 東方熱帯林へ。 わんくま 東京勉強会#2 C++/CLI カクテル・レシピ 東京勉強会#3 template vs. generics 大阪勉強会#6 C++むかしばなし 東京勉強会#7 C++むかしばなし 東京勉強会#8 STL/CLRによるGeneric Programming TechEd 2007 @YOKOHAMA C++C++/CLI・C# 適材適所 東京勉強会#14 Making of BOF 東京勉強会#15 状態遷移 名古屋勉強会#2 WinUnit - お気楽お手軽UnitTest CodeZine Cで実現する「ぷちオブジェクト指向」 CUnitによるテスト駆

    nitoyon
    nitoyon 2007/12/30
    C++で関数オブジェクト。
  • boost::assign使ってみた - Faith and Brave - C++で遊ぼう

    #include <iostream> #include <vector> #include <shand/foreach.hpp> #include <boost/assign/std/vector.hpp> using namespace std; using namespace boost::assign; int main() { vector<int> v; v += 3, 1, 4; // !!! foreach (int value, v) cout << value << endl; return 0; } +=の中ではpush_backやってて、戻り値にlist_inserterとかいうのを使ってるのでカンマ区切りできるんだってさ 念のためboost::assign使わないコード #include <iostream> #include <vector> #include

    boost::assign使ってみた - Faith and Brave - C++で遊ぼう
    nitoyon
    nitoyon 2007/11/28
    vector<int> v に v += 3, 1, 4; で追加できるようになる。+= の戻り値にlist_inserterを返して、カンマ演算子でモニョモニョ。あとでソース読まなきゃ。 → ブログに書いた http://d.hatena.ne.jp/nitoyon/20071211/boost_asign
  • 1