2007-02-14から1日間の記事一覧

Template Meta-Programing 初歩 その2 : 型の切り替え

C++

template < bool bln, typename Type1, Typename Type2 > struct Std { typedef Type1 Type; }; template < typename Type1, typename Type2 > struct Std< false > { typedef Type2 Type; }; class CTest1 { /* 省略 */ }; class CTest2 { /* 省略 */ }; Std…

Template Meta-Programing 初歩 注意点

C++

Template Meta-Programing の処理はコンパイル時に行われる。 その為 Template Meta-Programing ではあくまで静的な処理しか行わない (動的な処理の切り替えは不可能)。 また、enum 名は型として使用できない。 数値として処理される。

Template Meta-Programing 初歩 その1 : 階乗

C++

template < int n > struct Factional { enum { value = n * Factional< n - 1 > }; }; template <> struct Factional< 1 > { enum { value = 1 }; }; int i = Factional< 5 >::value; /* i = 120 */

変数自体を実行

C++

class Test { /* 省略 */ }; Test var; とした時に class Test に operator()() を宣言・定義するだけで、 var(); と実行する関数を作ることが出来る。 STLの一部のアルゴリズムでは関数の実行結果で判定を行うのだが、 operator()( iter->Item ) という形で…

IPv6 の名前解決を無効にする

/etc/modprobe.d/aliases を編集 [変更前] alias net-pf-10 ipv6 [変更後] alias net-pf-10 off 参考 http://blog.goo.ne.jp/tbinterface/a4269988dd39dcbef3b3908f65d76eb7/30