#pragma once namespace al { class AreaShape; template AreaShape* createAreaShapeFunction() { return new T(); } } // namespace al