What I\'m actually trying to do is cast a constructed moneypunct to the punct_facet in this question without writing a copy constructor as in this answ
It is not legal to assign address of base object to pointer of derived class.
If you want to call virtual function in derived class, you have to instantiate an object of derived class and call it thru this object, or pointer (of which type might be base class) to this object.
Virtual function tables in base and derived class are separated, so you cannot access virtual function of derived class thru an object of base class