鍋あり谷あり

テーマを決めずに適当に書いています。

プログラミング

昨日と一昨日の続き

先日言及しただけで書かなかった、cl で通らないソースは以下の通り: typedef int (*foo)( void * ); void test() { foo( foo ); foo( foo ); }ご覧の通り、http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20051124#p01 にあるものと全く一緒。 gcc …

Cでも不思議な世界 - 2度目は意味が違う

私としては。 昨日書いた件について、悪いのは演算子のオーバーロードではなく、 foo という名前が一つの文に二度出ているのにエラーにならない*1 関数呼び出しと変数宣言(定義)の文法が区別しにくい template のための括弧が、あらゆる文脈で登場しうる不等…

C++の不思議な世界 - 2度目は意味が違う

昨日コメント欄に書いたんだが。 同じことを続けて書くと、1度目と2度目で意味が変わることがある。 私が思いついているのは、昨日書いたのを含めて、以下の2例: struct foo{ foo(){ cout << "default ctor" << endl; } void operator()(const foo&){ cout <…

私の知らなかったC++もっともっと

私の無知をさらけ出すシリーズ第4弾。 まずは前回の続き。ポインタに変換できる const int の話。 昨日書いた例は、今ひとつ不幸な感じがしなかったように思うので、もうちょっと不幸そうな例を書いておく: struct x{ x(double){} }; void foo( x ){ cout <…

私の知らないC++

好評かどうかは知らないんだが、引き続き C++の話。 この前までのは「知らなかった」なんだが、今回のはいまだに知らないので「知らない」となっている。 無知をさらけ出すのは恥ずかしいことのはずなんだが、このシリーズで書いている内容についてはあまり…

私の知らなかった C++ もうひとつ

C++の不思議な仕様をもう一つ発見。やはり C++ は発見に満ちている。 enum E{ EZero = 0 }; const int zero = 0; void test() { char * c; c = EZero; // これはエラー c = false; c = 1<0; c = '\0'; c = 0; // これは正しいに決まっている。 c = zero; // …

私の知らなかった C++

久々にプログラミングの話。 昨日、また C++ の私の知らない言語仕様を発見した。C++ は発見に満ちている。 以下の通り: void foo( int ){ cout << "int" << endl; } void foo( long ){ cout << "long" << endl; } void foo( long long ){ cout << "long lo…

型による推論の続き

昨日の記事 id:Nabetani:20051108:p3 を書いてすぐに寝たんだが、寝ている間に。 コンストラクタをテンプレートメンバ関数にすれば、変数が5個でも10個でもコンストラクタの数があまり多くならないということに気がついた。 具体的にはこんな感じ: template…

型から推論する

boost::tuple を直接利用しなくてもいいのであれば、 id:mb2sync:20051108:p1 でやっているようなことは、もうちょっと直接的に書くこともできる。 要点だけを書くと: template< typename t > struct xtuple_base { t m; xtuple_base( const t & _m ) : m( …

C++は難しい

先日書いた( id:Nabetani:20051021:p1 )、template のあやしげな使い方でコピーコンストラクタを禁止する作戦は、gcc に通用しなかった。 通用しない gcc が悪いのか、通用してしまう microsoft のコンパイラが悪いのか、あるいは実装依存なのか。私にはわか…

型名であると宣言したい

C++ には足りないものがたくさんある。毎日のようにあああれが欲しいああこれが欲しいと思う。今日、特にほしくなったのは、typename 宣言。 何のことかというと: class foo; void foo_func( foo * ); // foo の詳細は別の場所で。これが合法なのに、foo は…

コピーできないクラス

C++の設計と進化を読んでいたら、324ページの監註に: private にした代入およびコピーコンストラクタを(宣言のみで)実装しなければ、リンク時にエラーとなることでコピーを抑止できます。残念ながら、コンパイル時には抑止できませんけど。 とあるのだが、…

やっぱり修行足りない。

jijixi's diary - 修行が足りない……の? , 例外は… , FRISK LIQUIDS , Selector Namespace の話 , Selector Namespace の話その2 への返信だけど私も恥ずかしがり屋なのでトラックバックはしないことにして:私もやっぱり int (*func)() のような例は知って…

修行が足りない

先日。C++の設計と進化 を読んでいたら、私の知らない文法が目にとまった。 int a; // a を int 型として宣言(定義?)する。これは普通。 int( b ); // b を int 型として宣言(定義?)する。こんなところに括弧を書いてもいいなんて知らなかった。まだまだ C+…

読まれると恥ずかしいけどの続き

http://d.hatena.ne.jp/Nabetani/20050919/c1127170014 に答えて:delete mLNext は、ずばり不要だと思っています。 不要ですが、パフォーマンスがよくなる可能性があると思って書きました(悪くなる可能性もあります)。 mLNext はそれなりにサイズが大きく…

読まれると恥ずかしいけど

私の書いた MTASC のソースを読み解いてくださっているのを発見(id:sshi:20050918)。 (ここで文体が変わり) 恥ずかしいんですが、じゃんじゃんやってください>id:sshi さんで。 折角なので思ったことをいくつか書いておきます: new の左辺 私も、var t…

もうひとつ書いてみた

昨日の続き。 id:Cryolite:20050908:p3 のアルゴリズムも実装してみた。

書いてみた

昨日の続き。 http://www.kmonos.net/wlog/53.php#_1604050908 の、トーナメントひいき問題。 紙とペンで考えてもわからないので、とりあえずプログラムを書いてみた。

switch の ラベル

switch 文の話の続き。 今日、C++ の本を見てみたら、どうも switch のラベルは 「switch( 式 )」 の直後に書いていいらしいということがわかった。 具体的には: switch( peach() ) case 0: if ( banana() ) case 1: { case 2: pear(); } // case 3: // こ…

いやがられるソースコード

先日、ひどいソースを見た、というような話になって思い出したんだが、私が見たことのあるソースで、一番いやだったのは:「if 文の then ブロックの途中から else ブロックの途中へジャンプ」である。 具体的には: void lemon(){ if ( orange() ){ // ここ…

コメントありがとうございます

http://d.hatena.ne.jp/Nabetani/20050831#c1125507219 への返信。 fix の話にかまけていて遅くなりましたが、コメントありがとうございます。>shelarcy 様 確かに私がイメージするものとは違ったわけですが、その辺りも含めて謎が解けたのですっきりしまし…

fix の話

http://www.kmonos.net/wlog/52.php#_0212050903 を見て、ぎゃふん! と思ってから寝た。 寝ている間に、いやあれは目指しているところが違うからいいんじゃないかと思えてきた。 とはいえ、やっぱりちょっとぎゃふんと思っている。思っているだけではつまら…

反則を避けて

昨日の続きで、不動点と再帰関数生成関数。 三件ものトラックバックを受け、ちょっと喜んでいるんだが、 id:SaitoAtsushi:20050902:p1 で、 boostを使っているのでちょっと反則っぽい と書かれてしまった。 仕方ないので、boost::function も boost::bind も…

可変長引数の話

http://d.hatena.ne.jp/Nabetani/20050828#c1125242314 への返信。 (ここで文体が変わり) 相変わらず、 http://d.hatena.ne.jp/Nabetani/20050823#c1124987740 に書いてくださった、 Boost::MPL で(中略)template だけで可変長引数を使用する template は…

stl の今ひとつなところ。

stl は、結構好きでよく使っているんだが、嫌いなところがひとつある。 それは、メンバの名前。 vector とか multimap 等のクラス名は悪くないんだが。 例えば。 出現頻度の非常に高い const_iterator の綴りが長すぎる。itor_c ぐらいにしておけばいいのに…

C++の設計と進化

C++の設計と進化を買った。最初の方をちらっと見た感じでは、面白そう。 とはいえ、ハリポタを読了するまで読み始まらない。うーむ。 で。 google:ストラウストラップ : 459件 google:ストラウストラウストラップ : 0件 google:ストラウストラウストラウスト…

MPL と 可変長引数メタ関数

http://d.hatena.ne.jp/Nabetani/20050827#c1125206461 への返信。 で。文体が変わって。 Boost.MPL を使ったことがないので、おっしゃっていることが理解できているかどうか自信がないんですが、強行します。ご了承下さい。たしかに。Boost.MPL で、メタ関…

Boost::Wave の話かと

http://d.hatena.ne.jp/Nabetani/20050818/p1 http://d.hatena.ne.jp/Nabetani/20050823/p1 の続きで、 http://d.hatena.ne.jp/Nabetani/20050818/c#c1124649895 http://d.hatena.ne.jp/Nabetani/20050823/c#c1124987740 の返信。 コメントにアンカーがつい…

flash player 8

flash player 8 を入れてみた。 折角なので、早速ベンチマーク。flash player 関連 2922ミリ秒 : Firefox+Flash Player 8,0,15,0 4157ミリ秒 : IE6+Flash Player 7,0,19,0 4266ミリ秒 : Firefox+Flash Player 7,0,19,0 5438ミリ秒 : IE6+Flash Player 6,0,79…

MTASC で作ったおもちゃ新作とコーディングスタイル

MTASC でまた作った。 http://nabetani.sakura.ne.jp/flash/etude20050825.html 今回もあやしいソース付き。ソースが 200 行を超えてしまった。200行未満で行こうと思っていたので、ちょっと悔しい。 一カ所でしか呼ばれないメソッドをその場で展開したり、…