これで参加2回目となるわんくま勉強会に参加しました。
今回はεπιστημηさん大阪降臨祭ということで、濃いネタに触れてきました。
επιστημηさんとは、数年前から某C/C++系掲示板にて
お見かけしていたが、実際に会ったのは今回が初めて。
その後の懇親会では、以前から聞いてみたかった C++ の仕様
について「なんで?」の疑問を投げかけることができました。
Q1.静的配列のサイズを取得する演算子が欲しい。
const int values[] = { 1, 3, 5, 7, 9 };
とあったとき、values に含まれる要素数を取得したいときがある。
こういった場合、常套手段として、sizeof 演算子を使う。
#define countof( arr ) ( sizeof( arr ) / sizeof( arr[ 0 ] ) )
とかしておけば、countof( values ) で要素数 5 が取得できる。
しかも、コンパイル時に求まるので、定数扱いになる。
A1.「vector を使え」というのが標準化委員会の答え。
vector< int > v;
v.push( 1 );
v.push( 3 );
v.size(); // 2
でもこれだと、const オブジェクトの初期化ができない。具体的には、
const vector< int > v = { 1, 3, 5, 7, 9 };
みたいなことができればいいのだが、今はそれができない。
だがしかし、将来の拡張でこれができるよう動いているとのこと!