C++ まにあっく

や、マニアックでもなんでもないですが。

なるべくパクリ率を減らすべく努力いたします…。

Boost を使おう

Boost のない C++ はただの C with classes だ --ゲーテ

素のC++は (STLでいくらか改善されるとはいえ) プログラミング言語としては中途半端。きっとBoostを使えばあなたもそう思ってくれる! (-)b ただし、素のC++に戻れない可能性もあるのでご注意を:

オススメは...

正直、これだけ使えれば、C++ライフを劇的にかえるには十分かと。

ADL

ADL (Argument Dependent name Lookup) ってえのがあります。要は

   1 std::cout << "hoge" << std::endl;

なんて書いたときに、operator << は勝手に std::operator << が使われますよね。このように、引数が std 名前空間に入っていれば、関数 (や演算子) も std から探してくれるってやつです。

これだけだと「ちょっとした便利機能」以外の何者でもないんですが、特にテンプレートあたりで複雑なワークアラウンドをしてると思わず躓いてしまうことがあります。(Boost の Serialization あたりで問題が起きたことがある気がする…) 無意識にADLを前提としたプログラムを組んでいたら、実は無効になっていた! という場合です。というわけで、こちら

typedef や using をはさむとADLが無効になりますよ、というだけなんですけどね。

一時オブジェクトを参照で

こんなんできます。

   1 Hoge func();
   2 const Hoge& hoge = func();

お姉さんびっくりだ! func() の戻り値の一時オブジェクトは hoge のスコープが切れるまで生き続けます。

ソースはこちら

wiredBeep/topics/Programming/CppManiac (last edited 2008-01-26 14:33:11 by beeplex)