Does this conform to the standard?
class Foo {
    Bar m_bar;
    Bar * m_woo;
public:
    Foo() : m_bar(42, 123), m_woo(&m_bar) { }
};
Does this conform to the standard?
class Foo {
    Bar m_bar;
    Bar * m_woo;
public:
    Foo() : m_bar(42, 123), m_woo(&m_bar) { }
};
It is correct. What is not correct is dereferencing that pointer before that particular subobject has been fully initialized.