以下のようなコード(ただしhoge_tはPODではない)で、クラスA,Bの
コンストラクタ起動時は変数a,bのコンストラクタ起動前なのに
a,bへのポインタを使っていますが、これはC++の規格的にOKですか?

#include<iostream>
class Base {
protected:
  hoge_t a b, *ptr;
  Base( hoge_t *p ) : a(), b(), ptr( p )
  { a= ...; b= ...; } //aとbの初期化処理
public:
  const hoge_t get(void) { return *ptr; }
};
class A : public Base {
public:
  A(void) : Base( &a ) {}
};
class B : public Base {
public:
  B(void) : Base( &b ) {}
};
int main(void){
  A a;
  B b;
  std::cout<< a.get()<< "\n";
  std::cout<< b.get()<< "\n";
  return 0;
}