2008-01-01から1年間の記事一覧

BEGIN/ENDブロック

昔、AWKにあるBEGIN/ENDブロックが、C++でも使えたら便利かもしれないと思って、 マクロで作ったことを思い出す。 脳内から発掘したものをここに晒しておく。 #define CAT(X,Y) CAT2(X,Y) #define CAT2(X,Y) X##Y #define BEGIN \ static class CAT(Begin_cl…

東大は時間の流れが違うらしい

http://www.sakamura-lab.org/FONT/ より 2008年4月より、Tフォントの無料一般公開をこのページで行うため、現在公開準備中です。 これって、2006年春に公開されるはずだったやつだよね。 http://www.itmedia.co.jp/news/articles/0512/15/news084.html 本当…

繋がらない

さっきまで、数時間にわたり、ネットに繋がらなかった。(゚Д゚)

不完全な列挙型

GCCでは、不完全な列挙型を宣言できる。 C++では利用できない。 enum foo; /* 不完全な列挙型の宣言 */ ... enum foo { hoge, hage, moge, sage, fuge }; 他の不完全型同様、変数を定義したり、sizeof演算子のオペランドにすることはできない。 Cでは sizeof…

原産国表記

http://okwave.jp/qa3792402.htmlより ニュースで騒がれている昨今ですが、例えば電気製品には原産国表示義務があるようです。 必ず、製造国名が製品のどこかに表記されています。いわゆる、「made in xxxx」ですね。 それに比べ、人間の口に入る食品の内、…

最小値、最大値を返す演算子

GCCのVer4.1以前のC++では、最小値、最大値を返す演算子?が利用できる。 この二つの演算子は、ビットORと論理ANDの間の結合順位をもつ左結合の演算子である。 GCCのマニュアルには、この演算子と似た振る舞いをもつ以下のマクロが紹介されている。 #define M…

最新ドラフトN2521

C++

ドラフトが更新されている。 30章 スレッドライブラリの中身、31章 日付及び時間のためのライブラリが、 追加された以外大きな変化はなさそう。 また、N2510によるとラムダ式の文法がまた変わるみたい。 N2487 N2510 <> <.> <&> <&> <=> <+> つーか、キーワ…

型が定義されているか判定する

C++

cppll:13290「その型があるかどうか」の判定方法より 標準C++内(多分)でやる方法。判定できるだけで、実用性はほとんどないけどな。 http://okwave.jp/qa3450940.htmlにあるコードを少しだけいじった。 typedef int* TYPE; namespace hoge{ struct dummy_cla…

配列変数への代入

GCC ver3.0以前のC++フロントエンドでは、型が全く同じ配列間で代入することができる。例 int a[N],b[N]; a = b; このとき、aとbはcv修飾も含め全く同じ必要があるため、極めて使いにくい。 また、コンストラクタを定義していないクラスに対して、この拡張機…

テンプレート定義の外部でのtypename、templateの使用

C++

http://d.hatena.ne.jp/faith_and_brave/20080128/1201510970のコメント欄に テンプレート定義の外部では、限定子としてのtemplateは使えないと書いたのだが、 C++0xでは書いてもいいのね。 http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#3…

BCCを信じてはいけないよ

C++

http://d.hatena.ne.jp/wraith13/20080103/1199302530より BCCは #if ディレクティブで sizeof が使えるのか。すげぇ。 しかし、結論が激しく逆転している。 JIS X 3014 16.1 p4 マクロ展開及び defined 単項演算子によるすべての置換の実行後、残っているす…