Entries from 2011-02-01 to 1 month

レガシーコードと shared_ptr

C++

もうちょっと続くんじゃ。http://shinh.skr.jp/m/?date=20110226#p03 基本カスタムデリータとか使った時点で負けてる感が強いというか…全く正しいです…設計まともなら、カスタムデリータとかまあ普通出番ないですね。これは重ファク*1です。 あと shared_ptr…

スレッドと所有権

C++

スレッド、というかスレッドのスタックや TLS っていうのは、通常所有することのできない、レアなオモシロリソースなんですよね。物理デバイスに紐づいたリソースとかもそうですけど。http://twitter.com/#!/Cryolite/status/41392398366015488 作成したスレ…

Boost.勉強会 #4

無闇にでかいというだけであまり好きでなくなってきた Boost ですが(というか、「Boost が」好きだったことがあっただろうか?)、勉強会がありました。それで発表したらしいです。適当ですがプレゼンおいときます。https://docs.google.com/present/edit?i…

COMFRK 無料です

例えば Win32 Crypt API の CryptProtectData なんですけど、 DATA_BLOB output; ::CryptProtectData(&input, desc, NULL, NULL, NULL, 0, &output); shared_ptr<BYTE> ptr(output.pbData, ::LocalFree); カスタムデリーターを使えば、オブジェクトをうっかり開放</byte>…

C++03 + boost で C++0x の async

適当なワードで検索するとhttps://svn.boost.org/trac/boost/ticket/4710とかがひっかかると思うんですが、このコードは動きません。unique_future の寿命延びたりしないのでダメです。 ということで shared_future 返すようにしましょう。 #include <boost/thread.hpp> #inclu</boost/thread.hpp>…

F# はじめました

.Net が使える ocaml として有名な F# をちょっと触っています。 全然 ocaml と違いました。とりあえずハローワールド [<EnryPoint>] let main _ = printfn "Hello, world!";; エントリーポイント属性必要とかモジュールの最後の関数じゃないとダメとか面倒くさい。あな</enrypoint>…

猫でも杓子でもわかる Functor in C++0x

関手というのがどうもよくわからず。 ということなので、釣り記事を書こうと思います。 Haskell とか使ってる人って、これぐらい全部わかってるイメージがありますし、矢張り釣り針は大きいほうがいいので、C++ で説明してみようと思います。C++ の関数型表…