class Base {
public:
 virtual Foo() = 0;
};

class Concrete : public Base {
public:
 Foo() { Bar(); }
};

という具合になってて

Base* base = new Concrete;
base->Foo();

とか

Concrete c;
Base& b = c;
b.Foo();

とかがいけるのはわかるのだけど

Base& base = Concrete;
base.Foo();

みたいにまとめて書くことはできないのでしょうか?
g++だとコンパイルは通らないけど、
VC++だとコンパイルが通って動いてしまうのが謎