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

排他的論理和 .XOR.

GCC version 3.4以前のGNU Fortran(g77)では、 排他的論理和を計算する.XOR.演算子が使用できる。 この拡張は、GCC 4.0で、Fortran フロントエンドの入替えに伴い自然消滅した。 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33432 一部で、復活してほしい…

配列の要素数を求めるのは意外と難しい

C++

C++で配列の要素数を求める方法は大きく分けて以下の二つの方法がよく知られている。 (a) #define SIZE(A) (sizeof(A)/sizeof(A[0])) (b) char (*sizehelper(T (&)[N]))[N] { return static_cast<char(*)[N]>(0); } #define SIZE(A) (sizeof(*sizehelper(A))) どちらの方</char(*)[n]>…

国際文字名

C++

C99 及び C++では、基本文字集合にない文字を、\uxxxx 又は \Uxxxxxxxxを使って表現できるが、 両者では、若干仕様が異なっている。 簡単なまとめ 識別子として使える文字の違い。 C++では、半角カナ、全角英文字が利用可。 ハングルの取り扱いが大きく異な…

C++0x最新 Working Draft 公開

C++

最新Draft N2798.pdf が公開された。 Concept導入により、ライブラリが、ほぼ総書換えになっている。まさか、ユーザー定義リテラルが規格に入るとは、思っていなかった。 これは、使いたくないなぁ。Attribute syntaxも入っているな。これ必要か? _Pragma()…

配列の要素アクセス

GCCでは、アドレスを取得できない配列に対しても、添字付けを行うことが出来る。 アドレスを取得できない配列には、以下の二つがある。 register修飾されているもの。 関数の戻り値である構造体のメンバであるもの。 この拡張は[]で要素アクセスする場合にの…

腹痛

17日に激しい腹痛と発熱に見舞われた。 寝返りを打つのも苦しかった。

無名クラスの入れ子クラス

C++

無名クラスの入れ子クラスを、関数テンプレートの引数にすると、Comeauでは、コンパイルできない。 どうやら、invalidなコードのようだ。 class { public: class bar{} baz; } foo; template <typename T> void hoge(const T&) {} int main(int argc, char *argv[]) { ho</typename>…

Visual studio 2008 SP1

VC

.NET Framework 3.5 SP1 がインストールエラーになる。(T_T) とりあえず、諦める。

Free Pascal Compiler

http://www.freepascal.org/ Version 2.2.2 がリリースされていたのでインストールしておく。 使う予定はないけど。

C++0xのraw string literal が名前に反して『raw』でない。

C++

バックスラッシュだらけにならずに正規表現が書けるのは一見便利だが、 『raw』でない部分があるのが気に入らない。 raw string literalの中でも以下の3点の変換が行われる。 行末のバックスラッシュによる行連結 トライグラフ ユニコードエスケープ これら…

歯痛

歯が痛ぇ〜よぉ。患部が腫れて、顔が変形している。 体全体が熱を持っている。さっき体温を測ったら38℃もある。 もうダメだ。

初心者のためのC++0x

C++

『C++0xは、初心者のための不可解なエラーメッセージを減らすための機能が追加されます。』 誰がこんなこと言い出したんだ? #include <vector> #include <bitset> using namespace std; int main() { vector<::bitset<0xe-1>> a; return 0; } 上記のコードは標準C++ではコンパイルできない(VC</::bitset<0xe-1></bitset></vector>…

コンパイル時多倍長演算ライブラリ

C++

誰か作っていないかな?ちょびっとだけ作ってみる。 const unsigned int BASE=100000; template <typename T, T V> struct value2type { typedef T type; static const type value=V; }; template<typename A, typename B, int LIM=-30> struct ADD { template <int J, bool = false> struct I { static const int value =( A::template I<J >:</j></int></typename></typename>…

Q&Aサイトにあった質問にここで密かに答える。

C++

http://okwave.jp/qa4126119.html template <typename T, T N> struct inttype { typedef T type; static const T value= N; }; template <std::size_t DIM> class Component { public: template <class ...ARGS> Component(ARGS... args) :Component(inttype<std::size_t, 0>(), args...){} template </std::size_t,></class></std::size_t></typename>

梅シロップ

去年 1.5kg作ったところ、美味しかったので、 今年は 5kg程度の梅で作る予定が、なぜか、砂糖の種類を色々変えて合計 8kg以上作ってしまった。

Version 4.3.1 リリース

GCC

近いうちにインストールする。

Gmail調子悪い

メーラーからの送信ができなくなった。 同様の症状の人がたくさんいるみたい。 http://groups.google.com/group/gmail-troubleshooting-ja/browse_thread/thread/682201c60360a7ac?hl=ja#

配列の添字付け演算子は可換だよ

C++

C/C++でプログラムを書いている人にはよく知られていて、改めてブログで取り上げる話題ではないと思う人もいるかもしれませんが、JIS規格に従うなら、添字付け演算子は可換ではありません。 X 3014 5.2.1/1 前の式は、“T へのポインタ”という型でなければな…

著作権のことは考えなかったの?

毎日新聞 ジョジョの奇妙な冒険:DVD作品にコーラン不適切表現 出荷停止へ ・・・・・・ 同社によると、敵役が、手にしたコーランを落とす場面があったという。原作ではただの本だったが、映像化の過程で、アラビア語の文章を探していた制作スタッフが、コー…

JIS規格の誤り

C++

ときどき、更新します。JIS C++ の誤りについて私が今までに見つけたもの。(訂正内容は私が適当に訳した)2.10/2 × (17.4.3及び1.2参照) ○ (17.4.3.1.2参照) 3.4.3.2/5 パラグラフの最後の文『otherwise (the declarations are from different namespaces), t…

ローカルな静的オブジェクトのデストラクタはまともに呼ばれるのか?

C++

ふと気になって、簡単なテストをしてみた。 #include <iostream> #include <cstdlib> struct foo { foo(int n):i(n){} ~foo(){ std::cout << "foo::~foo:" << i << std::endl; } private: int i; }; void bar(int i) { if(i) { static foo x(3); } static foo y(2); } void func</cstdlib></iostream>…

東大の四月は長い。

http://d.hatena.ne.jp/sulpsulpc/20080229#1204281785その後 フォントは五月に入ったが未だ公開されず… 東大の四月はいつまで続くのか?

固定小数点型

GCC version4.3以降(要--enable-fixed-point)では、固定小数点型が使えるはずである。 しかし、現時点では、GCCのバグのため、ビルドに失敗している。 10進浮動小数点型と違い、基本的な演算は、追加のライブラリを必要としない。 現在、何とか使えるように…

10進浮動小数点型

GCCのversion4.2以降(おそらく)(要--enable-decimal-float)では、 10進浮動小数点型_Decimal32、_Decimal64、_Decimal128が利用できる。 ただし、GCC単独では、10進浮動小数点型の宣言が出来るだけで、 10進浮動小数点が関わるすべての変換、演算は利用でき…

Cコンパイラ

C

https://staff.aist.go.jp/y.oiwa/FailSafeC/ メモリ安全を保証するCコンパイラか。 いつか試す。

スレッドローカル記憶クラス

GCCではキーワード__threadを使うことにより、スレッドローカルな変数を宣言できる。 int func() { static __thread int x; ... return x; } この機能は、Version 3.3からあるらしいが、cygwinでは使えなかった。 しかし、Version 4.3からは、cygwinでも使え…

C++0x ドラフト n2588 斜め読み

C++

英語は苦手なので間違っているかもしれんが、ざっと目を通してみた。ラムダ式を<>で開始するするのは遂に諦めたらしい。 関数本体を(...)で記述する方法はなくなったみたい。 Objective-C++で、メッセージ式との区別は一応出来るのかな。 [ローカル変数名] (…

最新ドラフト

C++

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2588.pdfが公開された。 Lambda式 キタ━━━━(゚∀゚)━━━━ !!!!!

ラベル付きbreakが欲しい

他の多くの言語には、ラベル付きbreakがあるのに、C++にはない。 マクロで強引に実装してみた。 ついでに制御移行条件、制御移行前実行部も付けてみる。 #define CAT2(X,Y) X##Y #define XCAT(X,Y) X##Y #define CAT(X,Y) CAT2(X,Y) #define BRK CAT(BRK, __…

GCC version 4.3.0リリース

GCC

早いうちに、インストールしたい。