Cannot appear constant-expression?

超不慣れなC++と戯れていて、プログラム全体で使用する定数をConstantクラスとして、クラス化してるんだけど、次のような書き方をするとErrorになる。

class Constant
{
public:
    static const double PI = 3.14159;
    static const double permeability = 4.0 * PI * 1.0e-7;
};

別の処理系だとうまく行くし、double型ではなくint型の場合だとCompileが通るので、GCCのバグなのかなぁ、と思って、GCC-4.3にしてもやっぱり同じエラーになる。
結局、これはGCCの仕様らしくて、constの宣言と定義を別々に書かないといけないらしい。

class Constant
{
public:
    static const double PI;
    static const double permeability;
};

const double Constant::PI = 3.14159;
const double permeability = 4.0 * PI * 1.0e-7;

わかってしまえばいいんだけど、だったら、Int型でもErrorにしてよ、って感じ。おかげで、無駄にGCCを4.3にするのに半日費やしちゃったよ。しかも、何でgcc-mp-4.3と言うようにmpと言うのが着いてんだ? 何か楽しそうなんですけど。。。