基底クラスに宣言した型を返すタイプの演算子オーバーロードって継承先では使用できないのでしょうか?

// ■ペースクラス
template <typename T>
class BASECLASS
{
protected:
unsigned long val;

public:
BASECLASS() {
val = 0;
};
~BASECLASS() {};

// 継承する型によって変化させたい
T& operator =(unsigned long val32) {
val = val32;
return *this;
}
operator unsigned long() {
return val;
}
};