涼の成長記録

自らの人生に主導権を持つべく、独立を目指して2014年3月31日を持ってITエンジニアを退職。そんな23歳♂の成長記録。

static constの定数で、"定数式が必要"のエラー

先日定数クラスを作ったのですが、今日STLのbitsetのテンプレート引数に、定数を指定すると、"定数式が必要"のエラーが発生しました。
ソースはこんな感じです。

TConstant.h

#ifndef TConstantH
#define TConstantH

class TConstant {
    public:
        static const int Max;
};

#endif

TConstant.cpp

#include "TConstant.h"

const int TConstant::Max = 64;

TBitsetUser.h

#ifndef TBitsetUserH
#define TBitsetUserH

#include <bitset>
#include "TConstant.h"

class TBitsetUser {
    private:
        std::bitset<TConstant::Max> m_Bitset;
};


いやいや、Maxはバリバリ定数のつもりです。とりあえず、ヘッダーファイルで宣言時に初期化することで、何故か事なきを得たわけですが。

TConstant.h

#ifndef TConstantH
#define TConstantH

class TConstant {
    public:
        // ヘッダーファイルで宣言時に初期化
        static const int Max = 64;
};

#endif


何故cpp側で初期化すると、定数式と認められないのでしょうか。うーん。。分かってないなー。